You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@creadur.apache.org by po...@apache.org on 2024/01/16 21:31:49 UTC

(creadur-site) branch asf-site updated: Republish preview webpage

This is an automated email from the ASF dual-hosted git repository.

pottlinger pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/creadur-site.git


The following commit(s) were added to refs/heads/asf-site by this push:
     new e0673218 Republish preview webpage
e0673218 is described below

commit e0673218ef024531f9412bc07e0942aea6666f66
Author: Hugo Hirsch <gi...@hugo-hirsch.de>
AuthorDate: Tue Jan 16 22:31:43 2024 +0100

    Republish preview webpage
---
 rat0161/apache-rat-core/apidocs/index-all.html     |   28 +-
 .../org/apache/rat/ReportConfiguration.html        |    2 +-
 .../rat/analysis/DefaultAnalyserFactory.html       |    8 +-
 .../matchers/SPDXMatcherFactory.Match.html         |   30 +-
 .../rat/annotation/AbstractLicenseAppender.html    |   13 +-
 .../rat/annotation/ApacheV2LicenseAppender.html    |   14 +-
 .../rat/document/class-use/IDocumentAnalyser.html  |    3 +-
 .../org/apache/rat/license/class-use/ILicense.html |    3 +-
 .../rat/report/claim/util/LicenseAddingReport.html |    8 +-
 .../apidocs/org/apache/rat/utils/DefaultLog.html   |   22 +-
 .../apidocs/org/apache/rat/utils/Log.Level.html    |   22 +-
 .../apidocs/org/apache/rat/utils/Log.html          |   75 +-
 .../org/apache/rat/utils/class-use/Log.Level.html  |   11 +-
 .../org/apache/rat/utils/class-use/Log.html        |   80 ++
 .../apidocs/org/apache/rat/utils/package-use.html  |   63 +
 rat0161/apache-rat-core/jira-report.html           |  180 +--
 rat0161/apache-rat-core/pmd.html                   |   94 +-
 rat0161/apache-rat-core/rat-report.html            |    2 +-
 .../org/apache/rat/ReportConfigurationTest.html    |   89 +-
 .../xref-test/org/apache/rat/ReportTest.html       |  101 +-
 .../xref-test/org/apache/rat/ReporterTest.html     |  200 +--
 .../apache/rat/analysis/AnalyserFactoryTest.html   |  185 +--
 .../rat/analysis/matchers/SPDXMatcherTest.html     |   13 +-
 .../apache/rat/annotation/TestLicenseAppender.html | 1289 ++++++++++----------
 .../rat/report/xml/XmlReportFactoryTest.html       |   92 +-
 .../org/apache/rat/report/xml/XmlReportTest.html   |  133 +-
 .../xref/org/apache/rat/Report.html                |  591 +++++----
 .../xref/org/apache/rat/ReportConfiguration.html   |    2 +-
 .../rat/analysis/DefaultAnalyserFactory.html       |  115 +-
 .../rat/analysis/DocumentHeaderAnalyser.html       |   76 +-
 .../org/apache/rat/analysis/LicenseCollection.html |  225 ++--
 .../rat/analysis/matchers/CopyrightMatcher.html    |   33 +-
 .../rat/analysis/matchers/SPDXMatcherFactory.html  |   13 +-
 .../rat/annotation/AbstractLicenseAppender.html    | 1170 +++++++++---------
 .../rat/annotation/ApacheV2LicenseAppender.html    |  148 +--
 .../xref/org/apache/rat/api/MetaData.html          |  299 ++---
 .../claim/impl/xml/SimpleXmlClaimReporter.html     |  241 ++--
 .../rat/report/claim/util/LicenseAddingReport.html |   51 +-
 .../apache/rat/report/xml/XmlReportFactory.html    |    4 +-
 .../xref/org/apache/rat/utils/DefaultLog.html      |   51 +-
 .../xref/org/apache/rat/utils/Log.html             |   77 +-
 rat0161/apache-rat-plugin/dependencies.html        |    2 +-
 rat0161/apache-rat-plugin/jira-report.html         |  180 +--
 rat0161/apache-rat-plugin/rat-report.html          |    2 +-
 rat0161/apache-rat-tasks/dependencies.html         |    2 +-
 rat0161/apache-rat-tasks/jira-report.html          |  180 +--
 rat0161/apache-rat-tasks/rat-report.html           |    2 +-
 rat0161/apache-rat/jira-report.html                |  180 +--
 rat0161/apache-rat/rat-report.html                 |    2 +-
 rat0161/apidocs/index-all.html                     |   28 +-
 .../org/apache/rat/ReportConfiguration.html        |    2 +-
 .../rat/analysis/DefaultAnalyserFactory.html       |    8 +-
 .../matchers/SPDXMatcherFactory.Match.html         |   30 +-
 .../rat/annotation/AbstractLicenseAppender.html    |   13 +-
 .../rat/annotation/ApacheV2LicenseAppender.html    |   14 +-
 .../rat/document/class-use/IDocumentAnalyser.html  |    3 +-
 .../org/apache/rat/license/class-use/ILicense.html |    3 +-
 .../rat/report/claim/util/LicenseAddingReport.html |    8 +-
 .../apidocs/org/apache/rat/utils/DefaultLog.html   |   22 +-
 .../apidocs/org/apache/rat/utils/Log.Level.html    |   22 +-
 rat0161/apidocs/org/apache/rat/utils/Log.html      |   75 +-
 .../org/apache/rat/utils/class-use/Log.Level.html  |   11 +-
 .../org/apache/rat/utils/class-use/Log.html        |   80 ++
 .../apidocs/org/apache/rat/utils/package-use.html  |   63 +
 rat0161/changes-report.html                        |    8 +
 rat0161/jira-report.html                           |  180 +--
 rat0161/rat-report.html                            |    2 +-
 67 files changed, 3851 insertions(+), 3127 deletions(-)

diff --git a/rat0161/apache-rat-core/apidocs/index-all.html b/rat0161/apache-rat-core/apidocs/index-all.html
index e525c5ac..9085f8ee 100644
--- a/rat0161/apache-rat-core/apidocs/index-all.html
+++ b/rat0161/apache-rat-core/apidocs/index-all.html
@@ -100,8 +100,10 @@
 <dd>
 <div class="block">Add a license header to a document.</div>
 </dd>
-<dt><span class="memberNameLink"><a href="org/apache/rat/annotation/AbstractLicenseAppender.html#AbstractLicenseAppender--">AbstractLicenseAppender()</a></span> - Constructor for class org.apache.rat.annotation.<a href="org/apache/rat/annotation/AbstractLicenseAppender.html" title="class in org.apache.rat.annotation">AbstractLicenseAppender</a></dt>
-<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/rat/annotation/AbstractLicenseAppender.html#AbstractLicenseAppender-org.apache.rat.utils.Log-">AbstractLicenseAppender(Log)</a></span> - Constructor for class org.apache.rat.annotation.<a href="org/apache/rat/annotation/AbstractLicenseAppender.html" title="class in org.apache.rat.annotation">AbstractLicenseAppender</a></dt>
+<dd>
+<div class="block">Constructor</div>
+</dd>
 <dt><a href="org/apache/rat/analysis/matchers/AbstractMatcherContainer.html" title="class in org.apache.rat.analysis.matchers"><span class="typeNameLink">AbstractMatcherContainer</span></a> - Class in <a href="org/apache/rat/analysis/matchers/package-summary.html">org.apache.rat.analysis.matchers</a></dt>
 <dd>
 <div class="block">A class that implements IHeaderMatcher as a collection of other IHeaderMatchers.</div>
@@ -282,11 +284,11 @@
 <div class="block">Add an Apache License V2 license header to a
  document.</div>
 </dd>
-<dt><span class="memberNameLink"><a href="org/apache/rat/annotation/ApacheV2LicenseAppender.html#ApacheV2LicenseAppender--">ApacheV2LicenseAppender()</a></span> - Constructor for class org.apache.rat.annotation.<a href="org/apache/rat/annotation/ApacheV2LicenseAppender.html" title="class in org.apache.rat.annotation">ApacheV2LicenseAppender</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/rat/annotation/ApacheV2LicenseAppender.html#ApacheV2LicenseAppender-org.apache.rat.utils.Log-">ApacheV2LicenseAppender(Log)</a></span> - Constructor for class org.apache.rat.annotation.<a href="org/apache/rat/annotation/ApacheV2LicenseAppender.html" title="class in org.apache.rat.annotation">ApacheV2LicenseAppender</a></dt>
 <dd>
 <div class="block">Create a license appender with the standard ASF license header.</div>
 </dd>
-<dt><span class="memberNameLink"><a href="org/apache/rat/annotation/ApacheV2LicenseAppender.html#ApacheV2LicenseAppender-java.lang.String-">ApacheV2LicenseAppender(String)</a></span> - Constructor for class org.apache.rat.annotation.<a href="org/apache/rat/annotation/ApacheV2LicenseAppender.html" title="class in org.apache.rat.annotation">ApacheV2LicenseAppender</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/rat/annotation/ApacheV2LicenseAppender.html#ApacheV2LicenseAppender-org.apache.rat.utils.Log-java.lang.String-">ApacheV2LicenseAppender(Log, String)</a></span> - Constructor for class org.apache.rat.annotation.<a href="org/apache/rat/annotation/ApacheV2LicenseAppender.html" title="class in org.apache.rat.annotation">ApacheV2LicenseAppender</a></dt>
 <dd>
 <div class="block">Create a license appender with the given copyright line.</div>
 </dd>
@@ -528,7 +530,7 @@
 <dd>
 <div class="block">Creates the spdx matcher.</div>
 </dd>
-<dt><span class="memberNameLink"><a href="org/apache/rat/analysis/DefaultAnalyserFactory.html#createDefaultAnalyser-java.util.Collection-">createDefaultAnalyser(Collection&lt;ILicense&gt;)</a></span> - Static method in class org.apache.rat.analysis.<a href="org/apache/rat/analysis/DefaultAnalyserFactory.html" title="class in org.apache.rat.analysis">DefaultAnalyserFactory</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/rat/analysis/DefaultAnalyserFactory.html#createDefaultAnalyser-org.apache.rat.utils.Log-java.util.Collection-">createDefaultAnalyser(Log, Collection&lt;ILicense&gt;)</a></span> - Static method in class org.apache.rat.analysis.<a href="org/apache/rat/analysis/DefaultAnalyserFactory.html" title="class in org.apache.rat.analysis">DefaultAnalyserFactory</a></dt>
 <dd>
 <div class="block">Creates a DocumentAnalyser from a collection of ILicenses.</div>
 </dd>
@@ -564,6 +566,8 @@
 <dd>
 <div class="block">Constructs a datum.</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/rat/utils/Log.html#debug-java.lang.Object-">debug(Object)</a></span> - Method in interface org.apache.rat.utils.<a href="org/apache/rat/utils/Log.html" title="interface in org.apache.rat.utils">Log</a></dt>
+<dd>&nbsp;</dd>
 <dt><a href="org/apache/rat/analysis/DefaultAnalyserFactory.html" title="class in org.apache.rat.analysis"><span class="typeNameLink">DefaultAnalyserFactory</span></a> - Class in <a href="org/apache/rat/analysis/package-summary.html">org.apache.rat.analysis</a></dt>
 <dd>
 <div class="block">Creates default analysers.</div>
@@ -672,6 +676,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/rat/utils/ReportingSet.html#equals-java.lang.Object-">equals(Object)</a></span> - Method in class org.apache.rat.utils.<a href="org/apache/rat/utils/ReportingSet.html" title="class in org.apache.rat.utils">ReportingSet</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/rat/utils/Log.html#error-java.lang.Object-">error(Object)</a></span> - Method in interface org.apache.rat.utils.<a href="org/apache/rat/utils/Log.html" title="interface in org.apache.rat.utils">Log</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/rat/document/impl/guesser/BinaryGuesser.html#extensionMatches-java.lang.String-java.lang.String:A-">extensionMatches(String, String[])</a></span> - Static method in class org.apache.rat.document.impl.guesser.<a href="org/apache/rat/document/impl/guesser/BinaryGuesser.html" title="class in org.apache.rat.document.impl.guesser">BinaryGuesser</a></dt>
 <dd>&nbsp;</dd>
 </dl>
@@ -1156,6 +1162,8 @@
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/rat/license/ILicenseFamilyBuilder.html#ILicenseFamilyBuilder--">ILicenseFamilyBuilder()</a></span> - Constructor for class org.apache.rat.license.<a href="org/apache/rat/license/ILicenseFamilyBuilder.html" title="class in org.apache.rat.license">ILicenseFamilyBuilder</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/rat/utils/Log.html#info-java.lang.Object-">info(Object)</a></span> - Method in interface org.apache.rat.utils.<a href="org/apache/rat/utils/Log.html" title="interface in org.apache.rat.utils">Log</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/rat/Defaults.html#init--">init()</a></span> - Static method in class org.apache.rat.<a href="org/apache/rat/Defaults.html" title="class in org.apache.rat">Defaults</a></dt>
 <dd>
 <div class="block">Initialize the system configuration reader..</div>
@@ -1274,7 +1282,7 @@
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/rat/report/claim/util/LicenseAddingReport.html" title="class in org.apache.rat.report.claim.util"><span class="typeNameLink">LicenseAddingReport</span></a> - Class in <a href="org/apache/rat/report/claim/util/package-summary.html">org.apache.rat.report.claim.util</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/rat/report/claim/util/LicenseAddingReport.html#LicenseAddingReport-java.lang.String-boolean-">LicenseAddingReport(String, boolean)</a></span> - Constructor for class org.apache.rat.report.claim.util.<a href="org/apache/rat/report/claim/util/LicenseAddingReport.html" title="class in org.apache.rat.report.claim.util">LicenseAddingReport</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/rat/report/claim/util/LicenseAddingReport.html#LicenseAddingReport-org.apache.rat.utils.Log-java.lang.String-boolean-">LicenseAddingReport(Log, String, boolean)</a></span> - Constructor for class org.apache.rat.report.claim.util.<a href="org/apache/rat/report/claim/util/LicenseAddingReport.html" title="class in org.apache.rat.report.claim.util">LicenseAddingReport</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/rat/ReportConfiguration.html#licenseDuplicateOption-org.apache.rat.utils.ReportingSet.Options-">licenseDuplicateOption(ReportingSet.Options)</a></span> - Method in class org.apache.rat.<a href="org/apache/rat/ReportConfiguration.html" title="class in org.apache.rat">ReportConfiguration</a></dt>
 <dd>
@@ -1334,6 +1342,8 @@
 <dd>
 <div class="block">Writes a message at a specific log level.</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/rat/utils/Log.html#log-org.apache.rat.utils.Log.Level-java.lang.Object-">log(Log.Level, Object)</a></span> - Method in interface org.apache.rat.utils.<a href="org/apache/rat/utils/Log.html" title="interface in org.apache.rat.utils">Log</a></dt>
+<dd>&nbsp;</dd>
 <dt><a href="org/apache/rat/utils/Log.Level.html" title="enum in org.apache.rat.utils"><span class="typeNameLink">Log.Level</span></a> - Enum in <a href="org/apache/rat/utils/package-summary.html">org.apache.rat.utils</a></dt>
 <dd>
 <div class="block">The log levels supported by logging.</div>
@@ -2021,6 +2031,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/rat/analysis/matchers/OrMatcher.html#reset--">reset()</a></span> - Method in class org.apache.rat.analysis.matchers.<a href="org/apache/rat/analysis/matchers/OrMatcher.html" title="class in org.apache.rat.analysis.matchers">OrMatcher</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/rat/analysis/matchers/SPDXMatcherFactory.Match.html#reset--">reset()</a></span> - Method in class org.apache.rat.analysis.matchers.<a href="org/apache/rat/analysis/matchers/SPDXMatcherFactory.Match.html" title="class in org.apache.rat.analysis.matchers">SPDXMatcherFactory.Match</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/rat/analysis/UnknownLicense.html#reset--">reset()</a></span> - Method in class org.apache.rat.analysis.<a href="org/apache/rat/analysis/UnknownLicense.html" title="class in org.apache.rat.analysis">UnknownLicense</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/rat/utils/ReportingSet.html#retainAll-java.util.Collection-">retainAll(Collection&lt;?&gt;)</a></span> - Method in class org.apache.rat.utils.<a href="org/apache/rat/utils/ReportingSet.html" title="class in org.apache.rat.utils">ReportingSet</a></dt>
@@ -2129,6 +2141,8 @@
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/rat/ReportConfiguration.html#setInputFileFilter-java.io.FilenameFilter-">setInputFileFilter(FilenameFilter)</a></span> - Method in class org.apache.rat.<a href="org/apache/rat/ReportConfiguration.html" title="class in org.apache.rat">ReportConfiguration</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/rat/utils/DefaultLog.html#setLevel-org.apache.rat.utils.Log.Level-">setLevel(Log.Level)</a></span> - Method in class org.apache.rat.utils.<a href="org/apache/rat/utils/DefaultLog.html" title="class in org.apache.rat.utils">DefaultLog</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/rat/analysis/license/BaseLicense.html#setLicenseFamilyCategory-java.lang.String-">setLicenseFamilyCategory(String)</a></span> - Method in class org.apache.rat.analysis.license.<a href="org/apache/rat/analysis/license/BaseLicense.html" title="class in org.apache.rat.analysis.license">BaseLicense</a></dt>
 <dd>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span></div>
@@ -2565,6 +2579,8 @@ the order they are declared.</div>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/rat/walker/Walker.html#Walker-java.lang.String-java.io.File-java.io.FilenameFilter-">Walker(String, File, FilenameFilter)</a></span> - Constructor for class org.apache.rat.walker.<a href="org/apache/rat/walker/Walker.html" title="class in org.apache.rat.walker">Walker</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/rat/utils/Log.html#warn-java.lang.Object-">warn(Object)</a></span> - Method in interface org.apache.rat.utils.<a href="org/apache/rat/utils/Log.html" title="interface in org.apache.rat.utils">Log</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/rat/ReportConfiguration.NoCloseOutputStream.html#write-int-">write(int)</a></span> - Method in class org.apache.rat.<a href="org/apache/rat/ReportConfiguration.NoCloseOutputStream.html" title="class in org.apache.rat">ReportConfiguration.NoCloseOutputStream</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/rat/ReportConfiguration.NoCloseOutputStream.html#write-byte:A-int-int-">write(byte[], int, int)</a></span> - Method in class org.apache.rat.<a href="org/apache/rat/ReportConfiguration.NoCloseOutputStream.html" title="class in org.apache.rat">ReportConfiguration.NoCloseOutputStream</a></dt>
diff --git a/rat0161/apache-rat-core/apidocs/org/apache/rat/ReportConfiguration.html b/rat0161/apache-rat-core/apidocs/org/apache/rat/ReportConfiguration.html
index 97d6f263..107b775f 100644
--- a/rat0161/apache-rat-core/apidocs/org/apache/rat/ReportConfiguration.html
+++ b/rat0161/apache-rat-core/apidocs/org/apache/rat/ReportConfiguration.html
@@ -747,7 +747,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
 <dd><code>out</code> - The OutputStream supplier that provides the output stream to write
- the report to. (may be null)</dd>
+ the report to. A null value will use System.out.</dd>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../org/apache/rat/ReportConfiguration.NoCloseOutputStream.html" title="class in org.apache.rat"><code>ReportConfiguration.NoCloseOutputStream</code></a></dd>
 </dl>
diff --git a/rat0161/apache-rat-core/apidocs/org/apache/rat/analysis/DefaultAnalyserFactory.html b/rat0161/apache-rat-core/apidocs/org/apache/rat/analysis/DefaultAnalyserFactory.html
index 974f6064..f541b9e3 100644
--- a/rat0161/apache-rat-core/apidocs/org/apache/rat/analysis/DefaultAnalyserFactory.html
+++ b/rat0161/apache-rat-core/apidocs/org/apache/rat/analysis/DefaultAnalyserFactory.html
@@ -149,7 +149,8 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </tr>
 <tr id="i0" class="altColor">
 <td class="colFirst"><code>static <a href="../../../../org/apache/rat/document/IDocumentAnalyser.html" title="interface in org.apache.rat.document">IDocumentAnalyser</a></code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/rat/analysis/DefaultAnalyserFactory.html#createDefaultAnalyser-java.util.Collection-">createDefaultAnalyser</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../org/apache/rat/license/ILicense.html" title="interface in org.apache.rat.license">ILicense</a>&gt;&nbsp;licenses [...]
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/rat/analysis/DefaultAnalyserFactory.html#createDefaultAnalyser-org.apache.rat.utils.Log-java.util.Collection-">createDefaultAnalyser</a></span>(<a href="../../../../org/apache/rat/utils/Log.html" title="interface in org.apache.rat.utils">Log</a>&nbsp;log,
+                     <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../org/apache/rat/license/ILicense.html" title="interface in org.apache.rat.license">ILicense</a>&gt;&nbsp;licenses)</code>
 <div class="block">Creates a DocumentAnalyser from a collection of ILicenses.</div>
 </td>
 </tr>
@@ -192,13 +193,14 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <!--   -->
 </a>
 <h3>Method Detail</h3>
-<a name="createDefaultAnalyser-java.util.Collection-">
+<a name="createDefaultAnalyser-org.apache.rat.utils.Log-java.util.Collection-">
 <!--   -->
 </a>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>createDefaultAnalyser</h4>
-<pre>public static&nbsp;<a href="../../../../org/apache/rat/document/IDocumentAnalyser.html" title="interface in org.apache.rat.document">IDocumentAnalyser</a>&nbsp;createDefaultAnalyser(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../org/apache/rat/license/ILicense.html" title="interface in org.apache.rat.license">ILicense</a>&gt;&nbsp;licenses)</pre>
+<pre>public static&nbsp;<a href="../../../../org/apache/rat/document/IDocumentAnalyser.html" title="interface in org.apache.rat.document">IDocumentAnalyser</a>&nbsp;createDefaultAnalyser(<a href="../../../../org/apache/rat/utils/Log.html" title="interface in org.apache.rat.utils">Log</a>&nbsp;log,
+                                                      <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../org/apache/rat/license/ILicense.html" title="interface in org.apache.rat.license">ILicense</a>&gt;&nbsp;licenses)</pre>
 <div class="block">Creates a DocumentAnalyser from a collection of ILicenses.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
diff --git a/rat0161/apache-rat-core/apidocs/org/apache/rat/analysis/matchers/SPDXMatcherFactory.Match.html b/rat0161/apache-rat-core/apidocs/org/apache/rat/analysis/matchers/SPDXMatcherFactory.Match.html
index 877970b7..20c95e9a 100644
--- a/rat0161/apache-rat-core/apidocs/org/apache/rat/analysis/matchers/SPDXMatcherFactory.Match.html
+++ b/rat0161/apache-rat-core/apidocs/org/apache/rat/analysis/matchers/SPDXMatcherFactory.Match.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":10};
+var methods = {"i0":10,"i1":10};
 var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -168,13 +168,19 @@ extends <a href="../../../../../org/apache/rat/analysis/matchers/AbstractSimpleM
 <div class="block">Performs the actual match test.</div>
 </td>
 </tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/rat/analysis/matchers/SPDXMatcherFactory.Match.html#reset--">reset</a></span>()</code>
+<div class="block">Resets this state <code>State.i</code>.</div>
+</td>
+</tr>
 </table>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.rat.analysis.matchers.AbstractSimpleMatcher">
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.rat.analysis.matchers.<a href="../../../../../org/apache/rat/analysis/matchers/AbstractSimpleMatcher.html" title="class in org.apache.rat.analysis.matchers">AbstractSimpleMatcher</a></h3>
-<code><a href="../../../../../org/apache/rat/analysis/matchers/AbstractSimpleMatcher.html#currentState--">currentState</a>, <a href="../../../../../org/apache/rat/analysis/matchers/AbstractSimpleMatcher.html#finalizeState--">finalizeState</a>, <a href="../../../../../org/apache/rat/analysis/matchers/AbstractSimpleMatcher.html#matches-java.lang.String-">matches</a>, <a href="../../../../../org/apache/rat/analysis/matchers/AbstractSimpleMatcher.html#reset--">reset</a></code></li>
+<code><a href="../../../../../org/apache/rat/analysis/matchers/AbstractSimpleMatcher.html#currentState--">currentState</a>, <a href="../../../../../org/apache/rat/analysis/matchers/AbstractSimpleMatcher.html#finalizeState--">finalizeState</a>, <a href="../../../../../org/apache/rat/analysis/matchers/AbstractSimpleMatcher.html#matches-java.lang.String-">matches</a></code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.rat.analysis.matchers.AbstractHeaderMatcher">
@@ -207,7 +213,7 @@ extends <a href="../../../../../org/apache/rat/analysis/matchers/AbstractSimpleM
 <a name="doMatch-java.lang.String-">
 <!--   -->
 </a>
-<ul class="blockListLast">
+<ul class="blockList">
 <li class="blockList">
 <h4>doMatch</h4>
 <pre>protected&nbsp;boolean&nbsp;doMatch(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;line)</pre>
@@ -223,6 +229,24 @@ extends <a href="../../../../../org/apache/rat/analysis/matchers/AbstractSimpleM
 </dl>
 </li>
 </ul>
+<a name="reset--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>reset</h4>
+<pre>public&nbsp;void&nbsp;reset()</pre>
+<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/rat/analysis/IHeaderMatcher.html#reset--">IHeaderMatcher</a></code></span></div>
+<div class="block">Resets this state <code>State.i</code>. 
+ If text is being cached this method should clear that cache.</div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a href="../../../../../org/apache/rat/analysis/IHeaderMatcher.html#reset--">reset</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/rat/analysis/IHeaderMatcher.html" title="interface in org.apache.rat.analysis">IHeaderMatcher</a></code></dd>
+<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
+<dd><code><a href="../../../../../org/apache/rat/analysis/matchers/AbstractSimpleMatcher.html#reset--">reset</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/rat/analysis/matchers/AbstractSimpleMatcher.html" title="class in org.apache.rat.analysis.matchers">AbstractSimpleMatcher</a></code></dd>
+</dl>
+</li>
+</ul>
 </li>
 </ul>
 </li>
diff --git a/rat0161/apache-rat-core/apidocs/org/apache/rat/annotation/AbstractLicenseAppender.html b/rat0161/apache-rat-core/apidocs/org/apache/rat/annotation/AbstractLicenseAppender.html
index 3441fbe5..4f3dc792 100644
--- a/rat0161/apache-rat-core/apidocs/org/apache/rat/annotation/AbstractLicenseAppender.html
+++ b/rat0161/apache-rat-core/apidocs/org/apache/rat/annotation/AbstractLicenseAppender.html
@@ -137,7 +137,9 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <th class="colOne" scope="col">Constructor and Description</th>
 </tr>
 <tr class="altColor">
-<td class="colOne"><code><span class="memberNameLink"><a href="../../../../org/apache/rat/annotation/AbstractLicenseAppender.html#AbstractLicenseAppender--">AbstractLicenseAppender</a></span>()</code>&nbsp;</td>
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../org/apache/rat/annotation/AbstractLicenseAppender.html#AbstractLicenseAppender-org.apache.rat.utils.Log-">AbstractLicenseAppender</a></span>(<a href="../../../../org/apache/rat/utils/Log.html" title="interface in org.apache.rat.utils">Log</a>&nbsp;log)</code>
+<div class="block">Constructor</div>
+</td>
 </tr>
 </table>
 </li>
@@ -220,13 +222,18 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <!--   -->
 </a>
 <h3>Constructor Detail</h3>
-<a name="AbstractLicenseAppender--">
+<a name="AbstractLicenseAppender-org.apache.rat.utils.Log-">
 <!--   -->
 </a>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>AbstractLicenseAppender</h4>
-<pre>public&nbsp;AbstractLicenseAppender()</pre>
+<pre>public&nbsp;AbstractLicenseAppender(<a href="../../../../org/apache/rat/utils/Log.html" title="interface in org.apache.rat.utils">Log</a>&nbsp;log)</pre>
+<div class="block">Constructor</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>log</code> - The log to use.</dd>
+</dl>
 </li>
 </ul>
 </li>
diff --git a/rat0161/apache-rat-core/apidocs/org/apache/rat/annotation/ApacheV2LicenseAppender.html b/rat0161/apache-rat-core/apidocs/org/apache/rat/annotation/ApacheV2LicenseAppender.html
index 4dbd0031..6cd9a09e 100644
--- a/rat0161/apache-rat-core/apidocs/org/apache/rat/annotation/ApacheV2LicenseAppender.html
+++ b/rat0161/apache-rat-core/apidocs/org/apache/rat/annotation/ApacheV2LicenseAppender.html
@@ -139,12 +139,13 @@ extends <a href="../../../../org/apache/rat/annotation/AbstractLicenseAppender.h
 <th class="colOne" scope="col">Constructor and Description</th>
 </tr>
 <tr class="altColor">
-<td class="colOne"><code><span class="memberNameLink"><a href="../../../../org/apache/rat/annotation/ApacheV2LicenseAppender.html#ApacheV2LicenseAppender--">ApacheV2LicenseAppender</a></span>()</code>
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../org/apache/rat/annotation/ApacheV2LicenseAppender.html#ApacheV2LicenseAppender-org.apache.rat.utils.Log-">ApacheV2LicenseAppender</a></span>(<a href="../../../../org/apache/rat/utils/Log.html" title="interface in org.apache.rat.utils">Log</a>&nbsp;log)</code>
 <div class="block">Create a license appender with the standard ASF license header.</div>
 </td>
 </tr>
 <tr class="rowColor">
-<td class="colOne"><code><span class="memberNameLink"><a href="../../../../org/apache/rat/annotation/ApacheV2LicenseAppender.html#ApacheV2LicenseAppender-java.lang.String-">ApacheV2LicenseAppender</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;copyright)</code>
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../org/apache/rat/annotation/ApacheV2LicenseAppender.html#ApacheV2LicenseAppender-org.apache.rat.utils.Log-java.lang.String-">ApacheV2LicenseAppender</a></span>(<a href="../../../../org/apache/rat/utils/Log.html" title="interface in org.apache.rat.utils">Log</a>&nbsp;log,
+                       <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;copyright)</code>
 <div class="block">Create a license appender with the given copyright line.</div>
 </td>
 </tr>
@@ -196,23 +197,24 @@ extends <a href="../../../../org/apache/rat/annotation/AbstractLicenseAppender.h
 <!--   -->
 </a>
 <h3>Constructor Detail</h3>
-<a name="ApacheV2LicenseAppender--">
+<a name="ApacheV2LicenseAppender-org.apache.rat.utils.Log-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>ApacheV2LicenseAppender</h4>
-<pre>public&nbsp;ApacheV2LicenseAppender()</pre>
+<pre>public&nbsp;ApacheV2LicenseAppender(<a href="../../../../org/apache/rat/utils/Log.html" title="interface in org.apache.rat.utils">Log</a>&nbsp;log)</pre>
 <div class="block">Create a license appender with the standard ASF license header.</div>
 </li>
 </ul>
-<a name="ApacheV2LicenseAppender-java.lang.String-">
+<a name="ApacheV2LicenseAppender-org.apache.rat.utils.Log-java.lang.String-">
 <!--   -->
 </a>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>ApacheV2LicenseAppender</h4>
-<pre>public&nbsp;ApacheV2LicenseAppender(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;copyright)</pre>
+<pre>public&nbsp;ApacheV2LicenseAppender(<a href="../../../../org/apache/rat/utils/Log.html" title="interface in org.apache.rat.utils">Log</a>&nbsp;log,
+                               <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;copyright)</pre>
 <div class="block">Create a license appender with the given copyright line. This should be of
  the form &quot;Copyright 2008 Foo&quot;</div>
 <dl>
diff --git a/rat0161/apache-rat-core/apidocs/org/apache/rat/document/class-use/IDocumentAnalyser.html b/rat0161/apache-rat-core/apidocs/org/apache/rat/document/class-use/IDocumentAnalyser.html
index 2d47661f..3e40a429 100644
--- a/rat0161/apache-rat-core/apidocs/org/apache/rat/document/class-use/IDocumentAnalyser.html
+++ b/rat0161/apache-rat-core/apidocs/org/apache/rat/document/class-use/IDocumentAnalyser.html
@@ -116,7 +116,8 @@
 <tbody>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/rat/document/IDocumentAnalyser.html" title="interface in org.apache.rat.document">IDocumentAnalyser</a></code></td>
-<td class="colLast"><span class="typeNameLabel">DefaultAnalyserFactory.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/rat/analysis/DefaultAnalyserFactory.html#createDefaultAnalyser-java.util.Collection-">createDefaultAnalyser</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/rat/license/ILicense.html" title="int [...]
+<td class="colLast"><span class="typeNameLabel">DefaultAnalyserFactory.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/rat/analysis/DefaultAnalyserFactory.html#createDefaultAnalyser-org.apache.rat.utils.Log-java.util.Collection-">createDefaultAnalyser</a></span>(<a href="../../../../../org/apache/rat/utils/Log.html" title="interface in org.apache.rat.utils">Log</a>&nbsp;log,
+                     <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/rat/license/ILicense.html" title="interface in org.apache.rat.license">ILicense</a>&gt;&nbsp;licenses)</code>
 <div class="block">Creates a DocumentAnalyser from a collection of ILicenses.</div>
 </td>
 </tr>
diff --git a/rat0161/apache-rat-core/apidocs/org/apache/rat/license/class-use/ILicense.html b/rat0161/apache-rat-core/apidocs/org/apache/rat/license/class-use/ILicense.html
index f83e4200..bb2f029f 100644
--- a/rat0161/apache-rat-core/apidocs/org/apache/rat/license/class-use/ILicense.html
+++ b/rat0161/apache-rat-core/apidocs/org/apache/rat/license/class-use/ILicense.html
@@ -229,7 +229,8 @@
 <tbody>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/rat/document/IDocumentAnalyser.html" title="interface in org.apache.rat.document">IDocumentAnalyser</a></code></td>
-<td class="colLast"><span class="typeNameLabel">DefaultAnalyserFactory.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/rat/analysis/DefaultAnalyserFactory.html#createDefaultAnalyser-java.util.Collection-">createDefaultAnalyser</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/rat/license/ILicense.html" title="int [...]
+<td class="colLast"><span class="typeNameLabel">DefaultAnalyserFactory.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/rat/analysis/DefaultAnalyserFactory.html#createDefaultAnalyser-org.apache.rat.utils.Log-java.util.Collection-">createDefaultAnalyser</a></span>(<a href="../../../../../org/apache/rat/utils/Log.html" title="interface in org.apache.rat.utils">Log</a>&nbsp;log,
+                     <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/rat/license/ILicense.html" title="interface in org.apache.rat.license">ILicense</a>&gt;&nbsp;licenses)</code>
 <div class="block">Creates a DocumentAnalyser from a collection of ILicenses.</div>
 </td>
 </tr>
diff --git a/rat0161/apache-rat-core/apidocs/org/apache/rat/report/claim/util/LicenseAddingReport.html b/rat0161/apache-rat-core/apidocs/org/apache/rat/report/claim/util/LicenseAddingReport.html
index 9638ab07..1473a5be 100644
--- a/rat0161/apache-rat-core/apidocs/org/apache/rat/report/claim/util/LicenseAddingReport.html
+++ b/rat0161/apache-rat-core/apidocs/org/apache/rat/report/claim/util/LicenseAddingReport.html
@@ -138,7 +138,8 @@ extends <a href="../../../../../../org/apache/rat/report/AbstractReport.html" ti
 <th class="colOne" scope="col">Constructor and Description</th>
 </tr>
 <tr class="altColor">
-<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../../org/apache/rat/report/claim/util/LicenseAddingReport.html#LicenseAddingReport-java.lang.String-boolean-">LicenseAddingReport</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;pCopyrightMsg,
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../../org/apache/rat/report/claim/util/LicenseAddingReport.html#LicenseAddingReport-org.apache.rat.utils.Log-java.lang.String-boolean-">LicenseAddingReport</a></span>(<a href="../../../../../../org/apache/rat/utils/Log.html" title="interface in org.apache.rat.utils">Log</a>&nbsp;log,
+                   <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;pCopyrightMsg,
                    boolean&nbsp;pForced)</code>&nbsp;</td>
 </tr>
 </table>
@@ -191,13 +192,14 @@ extends <a href="../../../../../../org/apache/rat/report/AbstractReport.html" ti
 <!--   -->
 </a>
 <h3>Constructor Detail</h3>
-<a name="LicenseAddingReport-java.lang.String-boolean-">
+<a name="LicenseAddingReport-org.apache.rat.utils.Log-java.lang.String-boolean-">
 <!--   -->
 </a>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>LicenseAddingReport</h4>
-<pre>public&nbsp;LicenseAddingReport(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;pCopyrightMsg,
+<pre>public&nbsp;LicenseAddingReport(<a href="../../../../../../org/apache/rat/utils/Log.html" title="interface in org.apache.rat.utils">Log</a>&nbsp;log,
+                           <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;pCopyrightMsg,
                            boolean&nbsp;pForced)</pre>
 </li>
 </ul>
diff --git a/rat0161/apache-rat-core/apidocs/org/apache/rat/utils/DefaultLog.html b/rat0161/apache-rat-core/apidocs/org/apache/rat/utils/DefaultLog.html
index bb884721..a759bcd1 100644
--- a/rat0161/apache-rat-core/apidocs/org/apache/rat/utils/DefaultLog.html
+++ b/rat0161/apache-rat-core/apidocs/org/apache/rat/utils/DefaultLog.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":10};
+var methods = {"i0":10,"i1":10};
 var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -178,6 +178,10 @@ implements <a href="../../../../org/apache/rat/utils/Log.html" title="interface
 <div class="block">Writes a message at a specific log level.</div>
 </td>
 </tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/rat/utils/DefaultLog.html#setLevel-org.apache.rat.utils.Log.Level-">setLevel</a></span>(<a href="../../../../org/apache/rat/utils/Log.Level.html" title="enum in org.apache.rat.utils">Log.Level</a>&nbsp;level)</code>&nbsp;</td>
+</tr>
 </table>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
@@ -186,6 +190,13 @@ implements <a href="../../../../org/apache/rat/utils/Log.html" title="interface
 <h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
 <code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="htt [...]
 </ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.org.apache.rat.utils.Log">
+<!--   -->
+</a>
+<h3>Methods inherited from interface&nbsp;org.apache.rat.utils.<a href="../../../../org/apache/rat/utils/Log.html" title="interface in org.apache.rat.utils">Log</a></h3>
+<code><a href="../../../../org/apache/rat/utils/Log.html#debug-java.lang.Object-">debug</a>, <a href="../../../../org/apache/rat/utils/Log.html#error-java.lang.Object-">error</a>, <a href="../../../../org/apache/rat/utils/Log.html#info-java.lang.Object-">info</a>, <a href="../../../../org/apache/rat/utils/Log.html#log-org.apache.rat.utils.Log.Level-java.lang.Object-">log</a>, <a href="../../../../org/apache/rat/utils/Log.html#warn-java.lang.Object-">warn</a></code></li>
+</ul>
 </li>
 </ul>
 </li>
@@ -218,6 +229,15 @@ implements <a href="../../../../org/apache/rat/utils/Log.html" title="interface
 <!--   -->
 </a>
 <h3>Method Detail</h3>
+<a name="setLevel-org.apache.rat.utils.Log.Level-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setLevel</h4>
+<pre>public&nbsp;void&nbsp;setLevel(<a href="../../../../org/apache/rat/utils/Log.Level.html" title="enum in org.apache.rat.utils">Log.Level</a>&nbsp;level)</pre>
+</li>
+</ul>
 <a name="log-org.apache.rat.utils.Log.Level-java.lang.String-">
 <!--   -->
 </a>
diff --git a/rat0161/apache-rat-core/apidocs/org/apache/rat/utils/Log.Level.html b/rat0161/apache-rat-core/apidocs/org/apache/rat/utils/Log.Level.html
index 3bfbacf3..5da0b799 100644
--- a/rat0161/apache-rat-core/apidocs/org/apache/rat/utils/Log.Level.html
+++ b/rat0161/apache-rat-core/apidocs/org/apache/rat/utils/Log.Level.html
@@ -224,16 +224,6 @@ the order they are declared.</div>
 <!--   -->
 </a>
 <h3>Enum Constant Detail</h3>
-<a name="OFF">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>OFF</h4>
-<pre>public static final&nbsp;<a href="../../../../org/apache/rat/utils/Log.Level.html" title="enum in org.apache.rat.utils">Log.Level</a> OFF</pre>
-<div class="block">Log nothing.</div>
-</li>
-</ul>
 <a name="DEBUG">
 <!--   -->
 </a>
@@ -267,13 +257,23 @@ the order they are declared.</div>
 <a name="ERROR">
 <!--   -->
 </a>
-<ul class="blockListLast">
+<ul class="blockList">
 <li class="blockList">
 <h4>ERROR</h4>
 <pre>public static final&nbsp;<a href="../../../../org/apache/rat/utils/Log.Level.html" title="enum in org.apache.rat.utils">Log.Level</a> ERROR</pre>
 <div class="block">Log error only.</div>
 </li>
 </ul>
+<a name="OFF">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>OFF</h4>
+<pre>public static final&nbsp;<a href="../../../../org/apache/rat/utils/Log.Level.html" title="enum in org.apache.rat.utils">Log.Level</a> OFF</pre>
+<div class="block">Log nothing.</div>
+</li>
+</ul>
 </li>
 </ul>
 <!-- ============ METHOD DETAIL ========== -->
diff --git a/rat0161/apache-rat-core/apidocs/org/apache/rat/utils/Log.html b/rat0161/apache-rat-core/apidocs/org/apache/rat/utils/Log.html
index 53b98d23..54b4fc63 100644
--- a/rat0161/apache-rat-core/apidocs/org/apache/rat/utils/Log.html
+++ b/rat0161/apache-rat-core/apidocs/org/apache/rat/utils/Log.html
@@ -18,8 +18,8 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":6};
-var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"]};
+var methods = {"i0":18,"i1":18,"i2":18,"i3":18,"i4":6,"i5":18};
+var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"],16:["t5","Default Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
 var tableTab = "tableTab";
@@ -142,18 +142,39 @@ var activeTableTab = "activeTableTab";
 </a>
 <h3>Method Summary</h3>
 <table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
-<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t3" class="tableTab"><span><a href="javascript:show(4);">Abstract Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t3" class="tableTab"><span><a href="javascript:show(4);">Abstract Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t5" class="tableTab"><span><a href="javascript:show(16);">Default Methods</a></span><span class="tabE [...]
 <tr>
 <th class="colFirst" scope="col">Modifier and Type</th>
 <th class="colLast" scope="col">Method and Description</th>
 </tr>
 <tr id="i0" class="altColor">
+<td class="colFirst"><code>default void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/rat/utils/Log.html#debug-java.lang.Object-">debug</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;message)</code>&nbsp;</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code>default void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/rat/utils/Log.html#error-java.lang.Object-">error</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;message)</code>&nbsp;</td>
+</tr>
+<tr id="i2" class="altColor">
+<td class="colFirst"><code>default void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/rat/utils/Log.html#info-java.lang.Object-">info</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;message)</code>&nbsp;</td>
+</tr>
+<tr id="i3" class="rowColor">
+<td class="colFirst"><code>default void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/rat/utils/Log.html#log-org.apache.rat.utils.Log.Level-java.lang.Object-">log</a></span>(<a href="../../../../org/apache/rat/utils/Log.Level.html" title="enum in org.apache.rat.utils">Log.Level</a>&nbsp;level,
+   <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;message)</code>&nbsp;</td>
+</tr>
+<tr id="i4" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/rat/utils/Log.html#log-org.apache.rat.utils.Log.Level-java.lang.String-">log</a></span>(<a href="../../../../org/apache/rat/utils/Log.Level.html" title="enum in org.apache.rat.utils">Log.Level</a>&nbsp;level,
    <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;message)</code>
 <div class="block">Writes a message at a specific log level.</div>
 </td>
 </tr>
+<tr id="i5" class="rowColor">
+<td class="colFirst"><code>default void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/rat/utils/Log.html#warn-java.lang.Object-">warn</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;message)</code>&nbsp;</td>
+</tr>
 </table>
 </li>
 </ul>
@@ -172,7 +193,7 @@ var activeTableTab = "activeTableTab";
 <a name="log-org.apache.rat.utils.Log.Level-java.lang.String-">
 <!--   -->
 </a>
-<ul class="blockListLast">
+<ul class="blockList">
 <li class="blockList">
 <h4>log</h4>
 <pre>void&nbsp;log(<a href="../../../../org/apache/rat/utils/Log.Level.html" title="enum in org.apache.rat.utils">Log.Level</a>&nbsp;level,
@@ -185,6 +206,52 @@ var activeTableTab = "activeTableTab";
 </dl>
 </li>
 </ul>
+<a name="log-org.apache.rat.utils.Log.Level-java.lang.Object-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>log</h4>
+<pre>default&nbsp;void&nbsp;log(<a href="../../../../org/apache/rat/utils/Log.Level.html" title="enum in org.apache.rat.utils">Log.Level</a>&nbsp;level,
+                 <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;message)</pre>
+</li>
+</ul>
+<a name="debug-java.lang.Object-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>debug</h4>
+<pre>default&nbsp;void&nbsp;debug(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;message)</pre>
+</li>
+</ul>
+<a name="info-java.lang.Object-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>info</h4>
+<pre>default&nbsp;void&nbsp;info(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;message)</pre>
+</li>
+</ul>
+<a name="warn-java.lang.Object-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>warn</h4>
+<pre>default&nbsp;void&nbsp;warn(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;message)</pre>
+</li>
+</ul>
+<a name="error-java.lang.Object-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>error</h4>
+<pre>default&nbsp;void&nbsp;error(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;message)</pre>
+</li>
+</ul>
 </li>
 </ul>
 </li>
diff --git a/rat0161/apache-rat-core/apidocs/org/apache/rat/utils/class-use/Log.Level.html b/rat0161/apache-rat-core/apidocs/org/apache/rat/utils/class-use/Log.Level.html
index 391d3860..0e29b8a4 100644
--- a/rat0161/apache-rat-core/apidocs/org/apache/rat/utils/class-use/Log.Level.html
+++ b/rat0161/apache-rat-core/apidocs/org/apache/rat/utils/class-use/Log.Level.html
@@ -155,17 +155,26 @@ the order they are declared.</div>
 </tr>
 <tbody>
 <tr class="altColor">
+<td class="colFirst"><code>default void</code></td>
+<td class="colLast"><span class="typeNameLabel">Log.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/rat/utils/Log.html#log-org.apache.rat.utils.Log.Level-java.lang.Object-">log</a></span>(<a href="../../../../../org/apache/rat/utils/Log.Level.html" title="enum in org.apache.rat.utils">Log.Level</a>&nbsp;level,
+   <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;message)</code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">DefaultLog.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/rat/utils/DefaultLog.html#log-org.apache.rat.utils.Log.Level-java.lang.String-">log</a></span>(<a href="../../../../../org/apache/rat/utils/Log.Level.html" title="enum in org.apache.rat.utils">Log.Level</a>&nbsp;level,
    <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;msg)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">Log.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/rat/utils/Log.html#log-org.apache.rat.utils.Log.Level-java.lang.String-">log</a></span>(<a href="../../../../../org/apache/rat/utils/Log.Level.html" title="enum in org.apache.rat.utils">Log.Level</a>&nbsp;level,
    <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;message)</code>
 <div class="block">Writes a message at a specific log level.</div>
 </td>
 </tr>
+<tr class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><span class="typeNameLabel">DefaultLog.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/rat/utils/DefaultLog.html#setLevel-org.apache.rat.utils.Log.Level-">setLevel</a></span>(<a href="../../../../../org/apache/rat/utils/Log.Level.html" title="enum in org.apache.rat.utils">Log.Level</a>&nbsp;level)</code>&nbsp;</td>
+</tr>
 <tr class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/rat/utils/ReportingSet.html" title="class in org.apache.rat.utils">ReportingSet</a>&lt;<a href="../../../../../org/apache/rat/utils/ReportingSet.html" title="type parameter in ReportingSet">T</a>&gt;</code></td>
 <td class="colLast"><span class="typeNameLabel">ReportingSet.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/rat/utils/ReportingSet.html#setLogLevel-org.apache.rat.utils.Log.Level-">setLogLevel</a></span>(<a href="../../../../../org/apache/rat/utils/Log.Level.html" title="enum in org.apache.rat.utils">Log.Level</a>&nbsp;level)</code>
diff --git a/rat0161/apache-rat-core/apidocs/org/apache/rat/utils/class-use/Log.html b/rat0161/apache-rat-core/apidocs/org/apache/rat/utils/class-use/Log.html
index eb7ddf66..a70e4246 100644
--- a/rat0161/apache-rat-core/apidocs/org/apache/rat/utils/class-use/Log.html
+++ b/rat0161/apache-rat-core/apidocs/org/apache/rat/utils/class-use/Log.html
@@ -87,6 +87,18 @@
 <td class="colLast">&nbsp;</td>
 </tr>
 <tr class="rowColor">
+<td class="colFirst"><a href="#org.apache.rat.analysis">org.apache.rat.analysis</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><a href="#org.apache.rat.annotation">org.apache.rat.annotation</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a href="#org.apache.rat.report.claim.util">org.apache.rat.report.claim.util</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
+<tr class="altColor">
 <td class="colFirst"><a href="#org.apache.rat.utils">org.apache.rat.utils</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
@@ -128,6 +140,74 @@
 </tbody>
 </table>
 </li>
+<li class="blockList"><a name="org.apache.rat.analysis">
+<!--   -->
+</a>
+<h3>Uses of <a href="../../../../../org/apache/rat/utils/Log.html" title="interface in org.apache.rat.utils">Log</a> in <a href="../../../../../org/apache/rat/analysis/package-summary.html">org.apache.rat.analysis</a></h3>
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing methods, and an explanation">
+<caption><span>Methods in <a href="../../../../../org/apache/rat/analysis/package-summary.html">org.apache.rat.analysis</a> with parameters of type <a href="../../../../../org/apache/rat/utils/Log.html" title="interface in org.apache.rat.utils">Log</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><code>static <a href="../../../../../org/apache/rat/document/IDocumentAnalyser.html" title="interface in org.apache.rat.document">IDocumentAnalyser</a></code></td>
+<td class="colLast"><span class="typeNameLabel">DefaultAnalyserFactory.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/rat/analysis/DefaultAnalyserFactory.html#createDefaultAnalyser-org.apache.rat.utils.Log-java.util.Collection-">createDefaultAnalyser</a></span>(<a href="../../../../../org/apache/rat/utils/Log.html" title="interface in org.apache.rat.utils">Log</a>&nbsp;log,
+                     <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/rat/license/ILicense.html" title="interface in org.apache.rat.license">ILicense</a>&gt;&nbsp;licenses)</code>
+<div class="block">Creates a DocumentAnalyser from a collection of ILicenses.</div>
+</td>
+</tr>
+</tbody>
+</table>
+</li>
+<li class="blockList"><a name="org.apache.rat.annotation">
+<!--   -->
+</a>
+<h3>Uses of <a href="../../../../../org/apache/rat/utils/Log.html" title="interface in org.apache.rat.utils">Log</a> in <a href="../../../../../org/apache/rat/annotation/package-summary.html">org.apache.rat.annotation</a></h3>
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing constructors, and an explanation">
+<caption><span>Constructors in <a href="../../../../../org/apache/rat/annotation/package-summary.html">org.apache.rat.annotation</a> with parameters of type <a href="../../../../../org/apache/rat/utils/Log.html" title="interface in org.apache.rat.utils">Log</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colOne" scope="col">Constructor and Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/rat/annotation/AbstractLicenseAppender.html#AbstractLicenseAppender-org.apache.rat.utils.Log-">AbstractLicenseAppender</a></span>(<a href="../../../../../org/apache/rat/utils/Log.html" title="interface in org.apache.rat.utils">Log</a>&nbsp;log)</code>
+<div class="block">Constructor</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/rat/annotation/ApacheV2LicenseAppender.html#ApacheV2LicenseAppender-org.apache.rat.utils.Log-">ApacheV2LicenseAppender</a></span>(<a href="../../../../../org/apache/rat/utils/Log.html" title="interface in org.apache.rat.utils">Log</a>&nbsp;log)</code>
+<div class="block">Create a license appender with the standard ASF license header.</div>
+</td>
+</tr>
+<tr class="altColor">
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/rat/annotation/ApacheV2LicenseAppender.html#ApacheV2LicenseAppender-org.apache.rat.utils.Log-java.lang.String-">ApacheV2LicenseAppender</a></span>(<a href="../../../../../org/apache/rat/utils/Log.html" title="interface in org.apache.rat.utils">Log</a>&nbsp;log,
+                       <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;copyright)</code>
+<div class="block">Create a license appender with the given copyright line.</div>
+</td>
+</tr>
+</tbody>
+</table>
+</li>
+<li class="blockList"><a name="org.apache.rat.report.claim.util">
+<!--   -->
+</a>
+<h3>Uses of <a href="../../../../../org/apache/rat/utils/Log.html" title="interface in org.apache.rat.utils">Log</a> in <a href="../../../../../org/apache/rat/report/claim/util/package-summary.html">org.apache.rat.report.claim.util</a></h3>
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing constructors, and an explanation">
+<caption><span>Constructors in <a href="../../../../../org/apache/rat/report/claim/util/package-summary.html">org.apache.rat.report.claim.util</a> with parameters of type <a href="../../../../../org/apache/rat/utils/Log.html" title="interface in org.apache.rat.utils">Log</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colOne" scope="col">Constructor and Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/rat/report/claim/util/LicenseAddingReport.html#LicenseAddingReport-org.apache.rat.utils.Log-java.lang.String-boolean-">LicenseAddingReport</a></span>(<a href="../../../../../org/apache/rat/utils/Log.html" title="interface in org.apache.rat.utils">Log</a>&nbsp;log,
+                   <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;pCopyrightMsg,
+                   boolean&nbsp;pForced)</code>&nbsp;</td>
+</tr>
+</tbody>
+</table>
+</li>
 <li class="blockList"><a name="org.apache.rat.utils">
 <!--   -->
 </a>
diff --git a/rat0161/apache-rat-core/apidocs/org/apache/rat/utils/package-use.html b/rat0161/apache-rat-core/apidocs/org/apache/rat/utils/package-use.html
index e1f57d44..2e24f9fb 100644
--- a/rat0161/apache-rat-core/apidocs/org/apache/rat/utils/package-use.html
+++ b/rat0161/apache-rat-core/apidocs/org/apache/rat/utils/package-use.html
@@ -87,6 +87,18 @@
 <td class="colLast">&nbsp;</td>
 </tr>
 <tr class="rowColor">
+<td class="colFirst"><a href="#org.apache.rat.analysis">org.apache.rat.analysis</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><a href="#org.apache.rat.annotation">org.apache.rat.annotation</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a href="#org.apache.rat.report.claim.util">org.apache.rat.report.claim.util</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
+<tr class="altColor">
 <td class="colFirst"><a href="#org.apache.rat.utils">org.apache.rat.utils</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
@@ -118,6 +130,57 @@
 </tbody>
 </table>
 </li>
+<li class="blockList"><a name="org.apache.rat.analysis">
+<!--   -->
+</a>
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing classes, and an explanation">
+<caption><span>Classes in <a href="../../../../org/apache/rat/utils/package-summary.html">org.apache.rat.utils</a> used by <a href="../../../../org/apache/rat/analysis/package-summary.html">org.apache.rat.analysis</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colOne" scope="col">Class and Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colOne"><a href="../../../../org/apache/rat/utils/class-use/Log.html#org.apache.rat.analysis">Log</a>
+<div class="block">The definition of logging for the core.</div>
+</td>
+</tr>
+</tbody>
+</table>
+</li>
+<li class="blockList"><a name="org.apache.rat.annotation">
+<!--   -->
+</a>
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing classes, and an explanation">
+<caption><span>Classes in <a href="../../../../org/apache/rat/utils/package-summary.html">org.apache.rat.utils</a> used by <a href="../../../../org/apache/rat/annotation/package-summary.html">org.apache.rat.annotation</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colOne" scope="col">Class and Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colOne"><a href="../../../../org/apache/rat/utils/class-use/Log.html#org.apache.rat.annotation">Log</a>
+<div class="block">The definition of logging for the core.</div>
+</td>
+</tr>
+</tbody>
+</table>
+</li>
+<li class="blockList"><a name="org.apache.rat.report.claim.util">
+<!--   -->
+</a>
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing classes, and an explanation">
+<caption><span>Classes in <a href="../../../../org/apache/rat/utils/package-summary.html">org.apache.rat.utils</a> used by <a href="../../../../org/apache/rat/report/claim/util/package-summary.html">org.apache.rat.report.claim.util</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colOne" scope="col">Class and Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colOne"><a href="../../../../org/apache/rat/utils/class-use/Log.html#org.apache.rat.report.claim.util">Log</a>
+<div class="block">The definition of logging for the core.</div>
+</td>
+</tr>
+</tbody>
+</table>
+</li>
 <li class="blockList"><a name="org.apache.rat.utils">
 <!--   -->
 </a>
diff --git a/rat0161/apache-rat-core/jira-report.html b/rat0161/apache-rat-core/jira-report.html
index 2b046c11..4e56221b 100644
--- a/rat0161/apache-rat-core/jira-report.html
+++ b/rat0161/apache-rat-core/jira-report.html
@@ -250,13 +250,21 @@ JIRA Report
 <td>Closed</td></tr>
 <tr class="b">
 <td>0.16.1</td>
+<td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-346">RAT-346</a></td>
+<td>scan</td>
+<td>WARN in case user defined License family has the same name as existing one</td>
+<td>Improvement</td>
+<td>Fixed</td>
+<td>Closed</td></tr>
+<tr class="a">
+<td>0.16.1</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-342">RAT-342</a></td>
 <td></td>
 <td>Use Maven wrapper in RAT build</td>
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.16</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-328">RAT-328</a></td>
 <td>engine</td>
@@ -264,7 +272,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Resolved</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.16</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-326">RAT-326</a></td>
 <td>site</td>
@@ -272,7 +280,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Resolved</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.16</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-315">RAT-315</a></td>
 <td>build</td>
@@ -280,7 +288,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.16</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-314">RAT-314</a></td>
 <td>maven</td>
@@ -288,7 +296,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.16</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-335">RAT-335</a></td>
 <td></td>
@@ -296,7 +304,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Resolved</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.16</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-321">RAT-321</a></td>
 <td>engine</td>
@@ -304,7 +312,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Resolved</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.16</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-320">RAT-320</a></td>
 <td>cli</td>
@@ -312,7 +320,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Resolved</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.16</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-317">RAT-317</a></td>
 <td></td>
@@ -320,7 +328,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.16</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-311">RAT-311</a></td>
 <td></td>
@@ -328,7 +336,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.16</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-329">RAT-329</a></td>
 <td>engine</td>
@@ -336,7 +344,7 @@ JIRA Report
 <td>New Feature</td>
 <td>Fixed</td>
 <td>Resolved</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.16</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-322">RAT-322</a></td>
 <td>cli, maven</td>
@@ -344,7 +352,7 @@ JIRA Report
 <td>New Feature</td>
 <td>Fixed</td>
 <td>Resolved</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.16</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-264">RAT-264</a></td>
 <td></td>
@@ -352,7 +360,7 @@ JIRA Report
 <td>New Feature</td>
 <td>Fixed</td>
 <td>Resolved</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.16</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-251">RAT-251</a></td>
 <td></td>
@@ -360,7 +368,7 @@ JIRA Report
 <td>New Feature</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.16</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-338">RAT-338</a></td>
 <td></td>
@@ -368,7 +376,7 @@ JIRA Report
 <td>Task</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.16</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-316">RAT-316</a></td>
 <td>engine</td>
@@ -376,7 +384,7 @@ JIRA Report
 <td>Task</td>
 <td>Fixed</td>
 <td>Resolved</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.16</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-312">RAT-312</a></td>
 <td></td>
@@ -384,7 +392,7 @@ JIRA Report
 <td>Task</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.15</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-309">RAT-309</a></td>
 <td></td>
@@ -392,7 +400,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Resolved</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.15</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-307">RAT-307</a></td>
 <td></td>
@@ -400,7 +408,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.15</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-306">RAT-306</a></td>
 <td>site</td>
@@ -408,7 +416,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Resolved</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.15</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-310">RAT-310</a></td>
 <td></td>
@@ -416,7 +424,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.15</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-305">RAT-305</a></td>
 <td></td>
@@ -424,7 +432,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-298">RAT-298</a></td>
 <td></td>
@@ -432,7 +440,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-291">RAT-291</a></td>
 <td></td>
@@ -440,7 +448,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-290">RAT-290</a></td>
 <td></td>
@@ -448,7 +456,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-283">RAT-283</a></td>
 <td></td>
@@ -456,7 +464,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-281">RAT-281</a></td>
 <td></td>
@@ -464,7 +472,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-275">RAT-275</a></td>
 <td></td>
@@ -472,7 +480,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-273">RAT-273</a></td>
 <td></td>
@@ -480,7 +488,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-268">RAT-268</a></td>
 <td>maven</td>
@@ -488,7 +496,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-258">RAT-258</a></td>
 <td></td>
@@ -496,7 +504,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-257">RAT-257</a></td>
 <td>cli</td>
@@ -504,7 +512,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-212">RAT-212</a></td>
 <td></td>
@@ -512,7 +520,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-207">RAT-207</a></td>
 <td>maven</td>
@@ -520,7 +528,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-158">RAT-158</a></td>
 <td></td>
@@ -528,7 +536,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-304">RAT-304</a></td>
 <td></td>
@@ -536,7 +544,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-297">RAT-297</a></td>
 <td></td>
@@ -544,7 +552,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-289">RAT-289</a></td>
 <td></td>
@@ -552,7 +560,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-287">RAT-287</a></td>
 <td>site</td>
@@ -560,7 +568,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-285">RAT-285</a></td>
 <td></td>
@@ -568,7 +576,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-277">RAT-277</a></td>
 <td></td>
@@ -576,7 +584,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-274">RAT-274</a></td>
 <td></td>
@@ -584,7 +592,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-270">RAT-270</a></td>
 <td></td>
@@ -592,7 +600,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-269">RAT-269</a></td>
 <td></td>
@@ -600,7 +608,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-266">RAT-266</a></td>
 <td>maven</td>
@@ -608,7 +616,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-260">RAT-260</a></td>
 <td></td>
@@ -616,7 +624,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-250">RAT-250</a></td>
 <td></td>
@@ -624,7 +632,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-244">RAT-244</a></td>
 <td></td>
@@ -632,7 +640,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-118">RAT-118</a></td>
 <td>maven</td>
@@ -640,7 +648,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Resolved</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-262">RAT-262</a></td>
 <td>scan</td>
@@ -648,7 +656,7 @@ JIRA Report
 <td>New Feature</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-252">RAT-252</a></td>
 <td></td>
@@ -656,7 +664,7 @@ JIRA Report
 <td>New Feature</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-288">RAT-288</a></td>
 <td>maven</td>
@@ -664,7 +672,7 @@ JIRA Report
 <td>Task</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-279">RAT-279</a></td>
 <td></td>
@@ -672,7 +680,7 @@ JIRA Report
 <td>Task</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-271">RAT-271</a></td>
 <td></td>
@@ -680,7 +688,7 @@ JIRA Report
 <td>Task</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-267">RAT-267</a></td>
 <td>reports</td>
@@ -688,7 +696,7 @@ JIRA Report
 <td>Task</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-254">RAT-254</a></td>
 <td></td>
@@ -696,7 +704,7 @@ JIRA Report
 <td>Task</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.13</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-242">RAT-242</a></td>
 <td>reports</td>
@@ -704,7 +712,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.13</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-234">RAT-234</a></td>
 <td></td>
@@ -712,7 +720,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.13</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-230">RAT-230</a></td>
 <td>maven</td>
@@ -720,7 +728,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.13</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-229">RAT-229</a></td>
 <td></td>
@@ -728,7 +736,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.13</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-228">RAT-228</a></td>
 <td>antlib</td>
@@ -736,7 +744,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.13</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-224">RAT-224</a></td>
 <td></td>
@@ -744,7 +752,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.13</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-222">RAT-222</a></td>
 <td></td>
@@ -752,7 +760,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.13</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-245">RAT-245</a></td>
 <td></td>
@@ -760,7 +768,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.13</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-243">RAT-243</a></td>
 <td>maven</td>
@@ -768,7 +776,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.13</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-241">RAT-241</a></td>
 <td>maven</td>
@@ -776,7 +784,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.13</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-233">RAT-233</a></td>
 <td></td>
@@ -784,7 +792,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.13</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-232">RAT-232</a></td>
 <td></td>
@@ -792,7 +800,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.13</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-231">RAT-231</a></td>
 <td></td>
@@ -800,7 +808,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.13</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-227">RAT-227</a></td>
 <td>site</td>
@@ -808,7 +816,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.13</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-226">RAT-226</a></td>
 <td>antlib</td>
@@ -816,7 +824,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.13</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-223">RAT-223</a></td>
 <td></td>
@@ -824,7 +832,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.13</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-221">RAT-221</a></td>
 <td>docs</td>
@@ -832,7 +840,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.13</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-218">RAT-218</a></td>
 <td>maven</td>
@@ -840,7 +848,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.13</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-217">RAT-217</a></td>
 <td></td>
@@ -848,7 +856,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.13</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-216">RAT-216</a></td>
 <td></td>
@@ -856,7 +864,7 @@ JIRA Report
 <td>Task</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.12</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-215">RAT-215</a></td>
 <td></td>
@@ -864,7 +872,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Resolved</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.12</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-214">RAT-214</a></td>
 <td></td>
@@ -872,7 +880,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.12</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-188">RAT-188</a></td>
 <td>maven</td>
@@ -880,7 +888,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Resolved</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.12</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-180">RAT-180</a></td>
 <td></td>
@@ -888,7 +896,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Resolved</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.12</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-179">RAT-179</a></td>
 <td>antlib, maven</td>
@@ -896,7 +904,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Resolved</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.12</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-177">RAT-177</a></td>
 <td></td>
@@ -904,21 +912,13 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Resolved</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.12</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-175">RAT-175</a></td>
 <td></td>
 <td>SourceCodeManagementSystems.hasIgnoreFile() should return boolean</td>
 <td>Bug</td>
 <td>Fixed</td>
-<td>Resolved</td></tr>
-<tr class="a">
-<td>0.12</td>
-<td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-174">RAT-174</a></td>
-<td></td>
-<td>CDDL1License still very slow</td>
-<td>Bug</td>
-<td>Fixed</td>
 <td>Resolved</td></tr></table></section>
       </div>
     </div>
diff --git a/rat0161/apache-rat-core/pmd.html b/rat0161/apache-rat-core/pmd.html
index 702e24fd..5ca05193 100644
--- a/rat0161/apache-rat-core/pmd.html
+++ b/rat0161/apache-rat-core/pmd.html
@@ -143,7 +143,7 @@ PMD Results
 <tr class="b">
 <td align="left"><a class="externalLink" href="https://pmd.github.io/pmd-6.55.0/pmd_rules_java_design.html#collapsibleifstatements">CollapsibleIfStatements</a></td>
 <td>These nested if statements could be combined</td>
-<td><a href="./xref/org/apache/rat/annotation/AbstractLicenseAppender.html#L233">233</a>&#x2013;<a href="./xref/org/apache/rat/annotation/AbstractLicenseAppender.html#L241">241</a></td></tr></table></section><section>
+<td><a href="./xref/org/apache/rat/annotation/AbstractLicenseAppender.html#L241">241</a>&#x2013;<a href="./xref/org/apache/rat/annotation/AbstractLicenseAppender.html#L249">249</a></td></tr></table></section><section>
 <h5><a name="org.2Fapache.2Frat.2Fconfiguration.2Fbuilders.2FChildContainerBuilder.java"></a>org/apache/rat/configuration/builders/ChildContainerBuilder.java</h5><a name="org.2Fapache.2Frat.2Fconfiguration.2Fbuilders.2FChildContainerBuilder.java"></a>
 <table border="0" class="bodyTable">
 <tr class="a">
@@ -187,11 +187,11 @@ PMD Results
 <tr class="b">
 <td align="left"><a class="externalLink" href="https://pmd.github.io/pmd-6.55.0/pmd_rules_java_codestyle.html#unnecessarymodifier">UnnecessaryModifier</a></td>
 <td>Unnecessary modifier 'public' on enum 'Level': the enum is declared in an interface type</td>
-<td><a href="./xref/org/apache/rat/utils/Log.html#L29">29</a>&#x2013;<a href="./xref/org/apache/rat/utils/Log.html#L49">49</a></td></tr>
+<td><a href="./xref/org/apache/rat/utils/Log.html#L29">29</a>&#x2013;<a href="./xref/org/apache/rat/utils/Log.html#L50">50</a></td></tr>
 <tr class="a">
 <td align="left"><a class="externalLink" href="https://pmd.github.io/pmd-6.55.0/pmd_rules_java_codestyle.html#unnecessarysemicolon">UnnecessarySemicolon</a></td>
 <td>Unnecessary semicolon</td>
-<td><a href="./xref/org/apache/rat/utils/Log.html#L49">49</a></td></tr></table></section><section>
+<td><a href="./xref/org/apache/rat/utils/Log.html#L50">50</a></td></tr></table></section><section>
 <h5><a name="org.2Fapache.2Frat.2Futils.2FReportingSet.java"></a>org/apache/rat/utils/ReportingSet.java</h5><a name="org.2Fapache.2Frat.2Futils.2FReportingSet.java"></a>
 <table border="0" class="bodyTable">
 <tr class="a">
@@ -203,6 +203,16 @@ PMD Results
 <td>Useless qualified this usage in the same class.</td>
 <td><a href="./xref/org/apache/rat/utils/ReportingSet.html#L131">131</a></td></tr></table></section></section><section>
 <h4><a name="Priority_4"></a>Priority 4</h4><a name="Priority_4"></a><section>
+<h5><a name="org.2Fapache.2Frat.2Fanalysis.2FDefaultAnalyserFactory.java"></a>org/apache/rat/analysis/DefaultAnalyserFactory.java</h5><a name="org.2Fapache.2Frat.2Fanalysis.2FDefaultAnalyserFactory.java"></a>
+<table border="0" class="bodyTable">
+<tr class="a">
+<th>Rule</th>
+<th>Violation</th>
+<th>Line</th></tr>
+<tr class="b">
+<td align="left"><a class="externalLink" href="https://pmd.github.io/pmd-6.55.0/pmd_rules_java_codestyle.html#unnecessaryimport">UnnecessaryImport</a></td>
+<td>Unused import 'org.apache.rat.utils.Log.Level'</td>
+<td><a href="./xref/org/apache/rat/analysis/DefaultAnalyserFactory.html#L33">33</a></td></tr></table></section><section>
 <h5><a name="org.2Fapache.2Frat.2Fanalysis.2Fmatchers.2FSPDXMatcherFactory.java"></a>org/apache/rat/analysis/matchers/SPDXMatcherFactory.java</h5><a name="org.2Fapache.2Frat.2Fanalysis.2Fmatchers.2FSPDXMatcherFactory.java"></a>
 <table border="0" class="bodyTable">
 <tr class="a">
@@ -222,39 +232,39 @@ PMD Results
 <tr class="b">
 <td align="left"><a class="externalLink" href="https://pmd.github.io/pmd-6.55.0/pmd_rules_java_codestyle.html#uselessparentheses">UselessParentheses</a></td>
 <td>Useless parentheses.</td>
-<td><a href="./xref/org/apache/rat/annotation/AbstractLicenseAppender.html#L533">533</a></td></tr>
+<td><a href="./xref/org/apache/rat/annotation/AbstractLicenseAppender.html#L541">541</a></td></tr>
 <tr class="a">
 <td align="left"><a class="externalLink" href="https://pmd.github.io/pmd-6.55.0/pmd_rules_java_codestyle.html#uselessparentheses">UselessParentheses</a></td>
 <td>Useless parentheses.</td>
-<td><a href="./xref/org/apache/rat/annotation/AbstractLicenseAppender.html#L540">540</a></td></tr>
+<td><a href="./xref/org/apache/rat/annotation/AbstractLicenseAppender.html#L548">548</a></td></tr>
 <tr class="b">
 <td align="left"><a class="externalLink" href="https://pmd.github.io/pmd-6.55.0/pmd_rules_java_codestyle.html#uselessparentheses">UselessParentheses</a></td>
 <td>Useless parentheses.</td>
-<td><a href="./xref/org/apache/rat/annotation/AbstractLicenseAppender.html#L540">540</a></td></tr>
+<td><a href="./xref/org/apache/rat/annotation/AbstractLicenseAppender.html#L548">548</a></td></tr>
 <tr class="a">
 <td align="left"><a class="externalLink" href="https://pmd.github.io/pmd-6.55.0/pmd_rules_java_codestyle.html#uselessparentheses">UselessParentheses</a></td>
 <td>Useless parentheses.</td>
-<td><a href="./xref/org/apache/rat/annotation/AbstractLicenseAppender.html#L549">549</a></td></tr>
+<td><a href="./xref/org/apache/rat/annotation/AbstractLicenseAppender.html#L557">557</a></td></tr>
 <tr class="b">
 <td align="left"><a class="externalLink" href="https://pmd.github.io/pmd-6.55.0/pmd_rules_java_codestyle.html#uselessparentheses">UselessParentheses</a></td>
 <td>Useless parentheses.</td>
-<td><a href="./xref/org/apache/rat/annotation/AbstractLicenseAppender.html#L550">550</a></td></tr>
+<td><a href="./xref/org/apache/rat/annotation/AbstractLicenseAppender.html#L558">558</a></td></tr>
 <tr class="a">
 <td align="left"><a class="externalLink" href="https://pmd.github.io/pmd-6.55.0/pmd_rules_java_codestyle.html#uselessparentheses">UselessParentheses</a></td>
 <td>Useless parentheses.</td>
-<td><a href="./xref/org/apache/rat/annotation/AbstractLicenseAppender.html#L560">560</a></td></tr>
+<td><a href="./xref/org/apache/rat/annotation/AbstractLicenseAppender.html#L568">568</a></td></tr>
 <tr class="b">
 <td align="left"><a class="externalLink" href="https://pmd.github.io/pmd-6.55.0/pmd_rules_java_codestyle.html#uselessparentheses">UselessParentheses</a></td>
 <td>Useless parentheses.</td>
-<td><a href="./xref/org/apache/rat/annotation/AbstractLicenseAppender.html#L589">589</a></td></tr>
+<td><a href="./xref/org/apache/rat/annotation/AbstractLicenseAppender.html#L597">597</a></td></tr>
 <tr class="a">
 <td align="left"><a class="externalLink" href="https://pmd.github.io/pmd-6.55.0/pmd_rules_java_codestyle.html#uselessparentheses">UselessParentheses</a></td>
 <td>Useless parentheses.</td>
-<td><a href="./xref/org/apache/rat/annotation/AbstractLicenseAppender.html#L605">605</a></td></tr>
+<td><a href="./xref/org/apache/rat/annotation/AbstractLicenseAppender.html#L613">613</a></td></tr>
 <tr class="b">
 <td align="left"><a class="externalLink" href="https://pmd.github.io/pmd-6.55.0/pmd_rules_java_codestyle.html#uselessparentheses">UselessParentheses</a></td>
 <td>Useless parentheses.</td>
-<td><a href="./xref/org/apache/rat/annotation/AbstractLicenseAppender.html#L605">605</a></td></tr></table></section><section>
+<td><a href="./xref/org/apache/rat/annotation/AbstractLicenseAppender.html#L613">613</a></td></tr></table></section><section>
 <h5><a name="org.2Fapache.2Frat.2Flicense.2FLicenseFamilySetFactory.java"></a>org/apache/rat/license/LicenseFamilySetFactory.java</h5><a name="org.2Fapache.2Frat.2Flicense.2FLicenseFamilySetFactory.java"></a>
 <table border="0" class="bodyTable">
 <tr class="a">
@@ -274,8 +284,30 @@ PMD Results
 <tr class="b">
 <td align="left"><a class="externalLink" href="https://pmd.github.io/pmd-6.55.0/pmd_rules_java_codestyle.html#uselessparentheses">UselessParentheses</a></td>
 <td>Useless parentheses.</td>
-<td><a href="./xref/org/apache/rat/license/LicenseSetFactory.html#L221">221</a></td></tr></table></section></section></section><section>
+<td><a href="./xref/org/apache/rat/license/LicenseSetFactory.html#L221">221</a></td></tr></table></section><section>
+<h5><a name="org.2Fapache.2Frat.2Freport.2Fclaim.2Fimpl.2Fxml.2FSimpleXmlClaimReporter.java"></a>org/apache/rat/report/claim/impl/xml/SimpleXmlClaimReporter.java</h5><a name="org.2Fapache.2Frat.2Freport.2Fclaim.2Fimpl.2Fxml.2FSimpleXmlClaimReporter.java"></a>
+<table border="0" class="bodyTable">
+<tr class="a">
+<th>Rule</th>
+<th>Violation</th>
+<th>Line</th></tr>
+<tr class="b">
+<td align="left"><a class="externalLink" href="https://pmd.github.io/pmd-6.55.0/pmd_rules_java_codestyle.html#unnecessaryimport">UnnecessaryImport</a></td>
+<td>Unused import 'org.apache.rat.report.xml.writer.impl.base.XmlWriter'</td>
+<td><a href="./xref/org/apache/rat/report/claim/impl/xml/SimpleXmlClaimReporter.html#L27">27</a></td></tr></table></section></section></section><section>
 <h3><a name="Files"></a>Files</h3><a name="Files"></a><section>
+<h4><a name="org.2Fapache.2Frat.2Fanalysis.2FDefaultAnalyserFactory.java"></a>org/apache/rat/analysis/DefaultAnalyserFactory.java</h4><a name="org.2Fapache.2Frat.2Fanalysis.2FDefaultAnalyserFactory.java"></a>
+<table border="0" class="bodyTable">
+<tr class="a">
+<th>Rule</th>
+<th>Violation</th>
+<th>Priority</th>
+<th>Line</th></tr>
+<tr class="b">
+<td align="left"><a class="externalLink" href="https://pmd.github.io/pmd-6.55.0/pmd_rules_java_codestyle.html#unnecessaryimport">UnnecessaryImport</a></td>
+<td>Unused import 'org.apache.rat.utils.Log.Level'</td>
+<td>4</td>
+<td><a href="./xref/org/apache/rat/analysis/DefaultAnalyserFactory.html#L33">33</a></td></tr></table></section><section>
 <h4><a name="org.2Fapache.2Frat.2Fanalysis.2FHeaderCheckWorker.java"></a>org/apache/rat/analysis/HeaderCheckWorker.java</h4><a name="org.2Fapache.2Frat.2Fanalysis.2FHeaderCheckWorker.java"></a>
 <table border="0" class="bodyTable">
 <tr class="a">
@@ -316,52 +348,52 @@ PMD Results
 <td align="left"><a class="externalLink" href="https://pmd.github.io/pmd-6.55.0/pmd_rules_java_design.html#collapsibleifstatements">CollapsibleIfStatements</a></td>
 <td>These nested if statements could be combined</td>
 <td>3</td>
-<td><a href="./xref/org/apache/rat/annotation/AbstractLicenseAppender.html#L233">233</a>&#x2013;<a href="./xref/org/apache/rat/annotation/AbstractLicenseAppender.html#L241">241</a></td></tr>
+<td><a href="./xref/org/apache/rat/annotation/AbstractLicenseAppender.html#L241">241</a>&#x2013;<a href="./xref/org/apache/rat/annotation/AbstractLicenseAppender.html#L249">249</a></td></tr>
 <tr class="a">
 <td align="left"><a class="externalLink" href="https://pmd.github.io/pmd-6.55.0/pmd_rules_java_codestyle.html#uselessparentheses">UselessParentheses</a></td>
 <td>Useless parentheses.</td>
 <td>4</td>
-<td><a href="./xref/org/apache/rat/annotation/AbstractLicenseAppender.html#L533">533</a></td></tr>
+<td><a href="./xref/org/apache/rat/annotation/AbstractLicenseAppender.html#L541">541</a></td></tr>
 <tr class="b">
 <td align="left"><a class="externalLink" href="https://pmd.github.io/pmd-6.55.0/pmd_rules_java_codestyle.html#uselessparentheses">UselessParentheses</a></td>
 <td>Useless parentheses.</td>
 <td>4</td>
-<td><a href="./xref/org/apache/rat/annotation/AbstractLicenseAppender.html#L540">540</a></td></tr>
+<td><a href="./xref/org/apache/rat/annotation/AbstractLicenseAppender.html#L548">548</a></td></tr>
 <tr class="a">
 <td align="left"><a class="externalLink" href="https://pmd.github.io/pmd-6.55.0/pmd_rules_java_codestyle.html#uselessparentheses">UselessParentheses</a></td>
 <td>Useless parentheses.</td>
 <td>4</td>
-<td><a href="./xref/org/apache/rat/annotation/AbstractLicenseAppender.html#L540">540</a></td></tr>
+<td><a href="./xref/org/apache/rat/annotation/AbstractLicenseAppender.html#L548">548</a></td></tr>
 <tr class="b">
 <td align="left"><a class="externalLink" href="https://pmd.github.io/pmd-6.55.0/pmd_rules_java_codestyle.html#uselessparentheses">UselessParentheses</a></td>
 <td>Useless parentheses.</td>
 <td>4</td>
-<td><a href="./xref/org/apache/rat/annotation/AbstractLicenseAppender.html#L549">549</a></td></tr>
+<td><a href="./xref/org/apache/rat/annotation/AbstractLicenseAppender.html#L557">557</a></td></tr>
 <tr class="a">
 <td align="left"><a class="externalLink" href="https://pmd.github.io/pmd-6.55.0/pmd_rules_java_codestyle.html#uselessparentheses">UselessParentheses</a></td>
 <td>Useless parentheses.</td>
 <td>4</td>
-<td><a href="./xref/org/apache/rat/annotation/AbstractLicenseAppender.html#L550">550</a></td></tr>
+<td><a href="./xref/org/apache/rat/annotation/AbstractLicenseAppender.html#L558">558</a></td></tr>
 <tr class="b">
 <td align="left"><a class="externalLink" href="https://pmd.github.io/pmd-6.55.0/pmd_rules_java_codestyle.html#uselessparentheses">UselessParentheses</a></td>
 <td>Useless parentheses.</td>
 <td>4</td>
-<td><a href="./xref/org/apache/rat/annotation/AbstractLicenseAppender.html#L560">560</a></td></tr>
+<td><a href="./xref/org/apache/rat/annotation/AbstractLicenseAppender.html#L568">568</a></td></tr>
 <tr class="a">
 <td align="left"><a class="externalLink" href="https://pmd.github.io/pmd-6.55.0/pmd_rules_java_codestyle.html#uselessparentheses">UselessParentheses</a></td>
 <td>Useless parentheses.</td>
 <td>4</td>
-<td><a href="./xref/org/apache/rat/annotation/AbstractLicenseAppender.html#L589">589</a></td></tr>
+<td><a href="./xref/org/apache/rat/annotation/AbstractLicenseAppender.html#L597">597</a></td></tr>
 <tr class="b">
 <td align="left"><a class="externalLink" href="https://pmd.github.io/pmd-6.55.0/pmd_rules_java_codestyle.html#uselessparentheses">UselessParentheses</a></td>
 <td>Useless parentheses.</td>
 <td>4</td>
-<td><a href="./xref/org/apache/rat/annotation/AbstractLicenseAppender.html#L605">605</a></td></tr>
+<td><a href="./xref/org/apache/rat/annotation/AbstractLicenseAppender.html#L613">613</a></td></tr>
 <tr class="a">
 <td align="left"><a class="externalLink" href="https://pmd.github.io/pmd-6.55.0/pmd_rules_java_codestyle.html#uselessparentheses">UselessParentheses</a></td>
 <td>Useless parentheses.</td>
 <td>4</td>
-<td><a href="./xref/org/apache/rat/annotation/AbstractLicenseAppender.html#L605">605</a></td></tr></table></section><section>
+<td><a href="./xref/org/apache/rat/annotation/AbstractLicenseAppender.html#L613">613</a></td></tr></table></section><section>
 <h4><a name="org.2Fapache.2Frat.2Fconfiguration.2Fbuilders.2FChildContainerBuilder.java"></a>org/apache/rat/configuration/builders/ChildContainerBuilder.java</h4><a name="org.2Fapache.2Frat.2Fconfiguration.2Fbuilders.2FChildContainerBuilder.java"></a>
 <table border="0" class="bodyTable">
 <tr class="a">
@@ -427,6 +459,18 @@ PMD Results
 <td>Useless parentheses.</td>
 <td>4</td>
 <td><a href="./xref/org/apache/rat/license/LicenseSetFactory.html#L221">221</a></td></tr></table></section><section>
+<h4><a name="org.2Fapache.2Frat.2Freport.2Fclaim.2Fimpl.2Fxml.2FSimpleXmlClaimReporter.java"></a>org/apache/rat/report/claim/impl/xml/SimpleXmlClaimReporter.java</h4><a name="org.2Fapache.2Frat.2Freport.2Fclaim.2Fimpl.2Fxml.2FSimpleXmlClaimReporter.java"></a>
+<table border="0" class="bodyTable">
+<tr class="a">
+<th>Rule</th>
+<th>Violation</th>
+<th>Priority</th>
+<th>Line</th></tr>
+<tr class="b">
+<td align="left"><a class="externalLink" href="https://pmd.github.io/pmd-6.55.0/pmd_rules_java_codestyle.html#unnecessaryimport">UnnecessaryImport</a></td>
+<td>Unused import 'org.apache.rat.report.xml.writer.impl.base.XmlWriter'</td>
+<td>4</td>
+<td><a href="./xref/org/apache/rat/report/claim/impl/xml/SimpleXmlClaimReporter.html#L27">27</a></td></tr></table></section><section>
 <h4><a name="org.2Fapache.2Frat.2Futils.2FLog.java"></a>org/apache/rat/utils/Log.java</h4><a name="org.2Fapache.2Frat.2Futils.2FLog.java"></a>
 <table border="0" class="bodyTable">
 <tr class="a">
@@ -438,12 +482,12 @@ PMD Results
 <td align="left"><a class="externalLink" href="https://pmd.github.io/pmd-6.55.0/pmd_rules_java_codestyle.html#unnecessarymodifier">UnnecessaryModifier</a></td>
 <td>Unnecessary modifier 'public' on enum 'Level': the enum is declared in an interface type</td>
 <td>3</td>
-<td><a href="./xref/org/apache/rat/utils/Log.html#L29">29</a>&#x2013;<a href="./xref/org/apache/rat/utils/Log.html#L49">49</a></td></tr>
+<td><a href="./xref/org/apache/rat/utils/Log.html#L29">29</a>&#x2013;<a href="./xref/org/apache/rat/utils/Log.html#L50">50</a></td></tr>
 <tr class="a">
 <td align="left"><a class="externalLink" href="https://pmd.github.io/pmd-6.55.0/pmd_rules_java_codestyle.html#unnecessarysemicolon">UnnecessarySemicolon</a></td>
 <td>Unnecessary semicolon</td>
 <td>3</td>
-<td><a href="./xref/org/apache/rat/utils/Log.html#L49">49</a></td></tr></table></section><section>
+<td><a href="./xref/org/apache/rat/utils/Log.html#L50">50</a></td></tr></table></section><section>
 <h4><a name="org.2Fapache.2Frat.2Futils.2FReportingSet.java"></a>org/apache/rat/utils/ReportingSet.java</h4><a name="org.2Fapache.2Frat.2Futils.2FReportingSet.java"></a>
 <table border="0" class="bodyTable">
 <tr class="a">
diff --git a/rat0161/apache-rat-core/rat-report.html b/rat0161/apache-rat-core/rat-report.html
index f1f782d6..591a0aff 100644
--- a/rat0161/apache-rat-core/rat-report.html
+++ b/rat0161/apache-rat-core/rat-report.html
@@ -118,7 +118,7 @@ Rat (Release Audit Tool) results
 *****************************************************
 Summary
 -------
-Generated at: 2024-01-16T10:49:11+01:00
+Generated at: 2024-01-16T22:15:26+01:00
 
 Notes: 2
 Binaries: 3
diff --git a/rat0161/apache-rat-core/xref-test/org/apache/rat/ReportConfigurationTest.html b/rat0161/apache-rat-core/xref-test/org/apache/rat/ReportConfigurationTest.html
index 49ad22b5..d5e1ba8e 100644
--- a/rat0161/apache-rat-core/xref-test/org/apache/rat/ReportConfigurationTest.html
+++ b/rat0161/apache-rat-core/xref-test/org/apache/rat/ReportConfigurationTest.html
@@ -549,51 +549,50 @@
 <a class="jxr_linenumber" name="L541" href="#L541">541</a> <em class="jxr_javadoccomment">     * @param config The configuration to test.</em>
 <a class="jxr_linenumber" name="L542" href="#L542">542</a> <em class="jxr_javadoccomment">     */</em>
 <a class="jxr_linenumber" name="L543" href="#L543">543</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> validateDefault(ReportConfiguration config) {
-<a class="jxr_linenumber" name="L544" href="#L544">544</a>         <em class="jxr_comment">//config.validate( System.err::println );</em>
-<a class="jxr_linenumber" name="L545" href="#L545">545</a>         assertThat(config.isAddingLicenses()).isFalse();
-<a class="jxr_linenumber" name="L546" href="#L546">546</a>         assertThat(config.isAddingLicensesForced()).isFalse();
-<a class="jxr_linenumber" name="L547" href="#L547">547</a>         assertThat(config.getCopyrightMessage()).isNull();
-<a class="jxr_linenumber" name="L548" href="#L548">548</a>         assertThat(config.getInputFileFilter()).isNull();
-<a class="jxr_linenumber" name="L549" href="#L549">549</a>         assertThat(config.isStyleReport()).isTrue();
-<a class="jxr_linenumber" name="L550" href="#L550">550</a>         assertThat(config.getStyleSheet()).isNotNull().withFailMessage(<span class="jxr_string">"Stylesheet should not be null"</span>);
-<a class="jxr_linenumber" name="L551" href="#L551">551</a>         assertThat(config.getDirectoryFilter()).isNotNull().withFailMessage(<span class="jxr_string">"Directory filter should not be null"</span>);
-<a class="jxr_linenumber" name="L552" href="#L552">552</a>         assertThat(config.getDirectoryFilter()).isExactlyInstanceOf(NameBasedHiddenFileFilter.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="L553" href="#L553">553</a>         
-<a class="jxr_linenumber" name="L554" href="#L554">554</a>         validateDefaultApprovedLicenses(config);
-<a class="jxr_linenumber" name="L555" href="#L555">555</a>         validateDefaultLicenseFamilies(config);
-<a class="jxr_linenumber" name="L556" href="#L556">556</a>         validateDefaultLicenses(config);
-<a class="jxr_linenumber" name="L557" href="#L557">557</a>     }
-<a class="jxr_linenumber" name="L558" href="#L558">558</a>     
-<a class="jxr_linenumber" name="L559" href="#L559">559</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">class</strong> LoggingCapture <strong class="jxr_keyword">implements</strong> Log {
-<a class="jxr_linenumber" name="L560" href="#L560">560</a> 
-<a class="jxr_linenumber" name="L561" href="#L561">561</a>         StringBuilder captured = <strong class="jxr_keyword">new</strong> StringBuilder();
-<a class="jxr_linenumber" name="L562" href="#L562">562</a>         
-<a class="jxr_linenumber" name="L563" href="#L563">563</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> clear() {
-<a class="jxr_linenumber" name="L564" href="#L564">564</a>             captured = <strong class="jxr_keyword">new</strong> StringBuilder();
-<a class="jxr_linenumber" name="L565" href="#L565">565</a>         }
-<a class="jxr_linenumber" name="L566" href="#L566">566</a>         
-<a class="jxr_linenumber" name="L567" href="#L567">567</a>         @Override
-<a class="jxr_linenumber" name="L568" href="#L568">568</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> log(Level level, String msg) {
-<a class="jxr_linenumber" name="L569" href="#L569">569</a>             captured.append( String.format(<span class="jxr_string">"%s: %s%n"</span>, level, msg));
-<a class="jxr_linenumber" name="L570" href="#L570">570</a>         }
-<a class="jxr_linenumber" name="L571" href="#L571">571</a>         
-<a class="jxr_linenumber" name="L572" href="#L572">572</a>     }
-<a class="jxr_linenumber" name="L573" href="#L573">573</a>     
-<a class="jxr_linenumber" name="L574" href="#L574">574</a>     <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">class</strong> OutputStreamIntercepter <strong class="jxr_keyword">extends</strong> OutputStream {
-<a class="jxr_linenumber" name="L575" href="#L575">575</a>         
-<a class="jxr_linenumber" name="L576" href="#L576">576</a>         <strong class="jxr_keyword">int</strong> closeCount = 0;
-<a class="jxr_linenumber" name="L577" href="#L577">577</a> 
-<a class="jxr_linenumber" name="L578" href="#L578">578</a>         @Override
-<a class="jxr_linenumber" name="L579" href="#L579">579</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> write(<strong class="jxr_keyword">int</strong> arg0) <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="L580" href="#L580">580</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> UnsupportedOperationException();
-<a class="jxr_linenumber" name="L581" href="#L581">581</a>         }
-<a class="jxr_linenumber" name="L582" href="#L582">582</a>         
-<a class="jxr_linenumber" name="L583" href="#L583">583</a>         @Override
-<a class="jxr_linenumber" name="L584" href="#L584">584</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> close() {
-<a class="jxr_linenumber" name="L585" href="#L585">585</a>             ++closeCount;
-<a class="jxr_linenumber" name="L586" href="#L586">586</a>         }
-<a class="jxr_linenumber" name="L587" href="#L587">587</a>     }
-<a class="jxr_linenumber" name="L588" href="#L588">588</a> }
+<a class="jxr_linenumber" name="L544" href="#L544">544</a>         assertThat(config.isAddingLicenses()).isFalse();
+<a class="jxr_linenumber" name="L545" href="#L545">545</a>         assertThat(config.isAddingLicensesForced()).isFalse();
+<a class="jxr_linenumber" name="L546" href="#L546">546</a>         assertThat(config.getCopyrightMessage()).isNull();
+<a class="jxr_linenumber" name="L547" href="#L547">547</a>         assertThat(config.getInputFileFilter()).isNull();
+<a class="jxr_linenumber" name="L548" href="#L548">548</a>         assertThat(config.isStyleReport()).isTrue();
+<a class="jxr_linenumber" name="L549" href="#L549">549</a>         assertThat(config.getStyleSheet()).isNotNull().withFailMessage(<span class="jxr_string">"Stylesheet should not be null"</span>);
+<a class="jxr_linenumber" name="L550" href="#L550">550</a>         assertThat(config.getDirectoryFilter()).isNotNull().withFailMessage(<span class="jxr_string">"Directory filter should not be null"</span>);
+<a class="jxr_linenumber" name="L551" href="#L551">551</a>         assertThat(config.getDirectoryFilter()).isExactlyInstanceOf(NameBasedHiddenFileFilter.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="L552" href="#L552">552</a>         
+<a class="jxr_linenumber" name="L553" href="#L553">553</a>         validateDefaultApprovedLicenses(config);
+<a class="jxr_linenumber" name="L554" href="#L554">554</a>         validateDefaultLicenseFamilies(config);
+<a class="jxr_linenumber" name="L555" href="#L555">555</a>         validateDefaultLicenses(config);
+<a class="jxr_linenumber" name="L556" href="#L556">556</a>     }
+<a class="jxr_linenumber" name="L557" href="#L557">557</a>     
+<a class="jxr_linenumber" name="L558" href="#L558">558</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">class</strong> LoggingCapture <strong class="jxr_keyword">implements</strong> Log {
+<a class="jxr_linenumber" name="L559" href="#L559">559</a> 
+<a class="jxr_linenumber" name="L560" href="#L560">560</a>         StringBuilder captured = <strong class="jxr_keyword">new</strong> StringBuilder();
+<a class="jxr_linenumber" name="L561" href="#L561">561</a>         
+<a class="jxr_linenumber" name="L562" href="#L562">562</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> clear() {
+<a class="jxr_linenumber" name="L563" href="#L563">563</a>             captured = <strong class="jxr_keyword">new</strong> StringBuilder();
+<a class="jxr_linenumber" name="L564" href="#L564">564</a>         }
+<a class="jxr_linenumber" name="L565" href="#L565">565</a>         
+<a class="jxr_linenumber" name="L566" href="#L566">566</a>         @Override
+<a class="jxr_linenumber" name="L567" href="#L567">567</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> log(Level level, String msg) {
+<a class="jxr_linenumber" name="L568" href="#L568">568</a>             captured.append( String.format(<span class="jxr_string">"%s: %s%n"</span>, level, msg));
+<a class="jxr_linenumber" name="L569" href="#L569">569</a>         }
+<a class="jxr_linenumber" name="L570" href="#L570">570</a>         
+<a class="jxr_linenumber" name="L571" href="#L571">571</a>     }
+<a class="jxr_linenumber" name="L572" href="#L572">572</a>     
+<a class="jxr_linenumber" name="L573" href="#L573">573</a>     <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">class</strong> OutputStreamIntercepter <strong class="jxr_keyword">extends</strong> OutputStream {
+<a class="jxr_linenumber" name="L574" href="#L574">574</a>         
+<a class="jxr_linenumber" name="L575" href="#L575">575</a>         <strong class="jxr_keyword">int</strong> closeCount = 0;
+<a class="jxr_linenumber" name="L576" href="#L576">576</a> 
+<a class="jxr_linenumber" name="L577" href="#L577">577</a>         @Override
+<a class="jxr_linenumber" name="L578" href="#L578">578</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> write(<strong class="jxr_keyword">int</strong> arg0) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="L579" href="#L579">579</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> UnsupportedOperationException();
+<a class="jxr_linenumber" name="L580" href="#L580">580</a>         }
+<a class="jxr_linenumber" name="L581" href="#L581">581</a>         
+<a class="jxr_linenumber" name="L582" href="#L582">582</a>         @Override
+<a class="jxr_linenumber" name="L583" href="#L583">583</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> close() {
+<a class="jxr_linenumber" name="L584" href="#L584">584</a>             ++closeCount;
+<a class="jxr_linenumber" name="L585" href="#L585">585</a>         }
+<a class="jxr_linenumber" name="L586" href="#L586">586</a>     }
+<a class="jxr_linenumber" name="L587" href="#L587">587</a> }
 </pre>
 <hr/>
 <div id="footer">Copyright &#169; 2006&#x2013;2024 <a href="https://www.apache.org">Apache Software Foundation</a>. All rights reserved.</div>
diff --git a/rat0161/apache-rat-core/xref-test/org/apache/rat/ReportTest.html b/rat0161/apache-rat-core/xref-test/org/apache/rat/ReportTest.html
index 9e883f9a..0250df1f 100644
--- a/rat0161/apache-rat-core/xref-test/org/apache/rat/ReportTest.html
+++ b/rat0161/apache-rat-core/xref-test/org/apache/rat/ReportTest.html
@@ -42,54 +42,59 @@
 <a class="jxr_linenumber" name="L34" href="#L34">34</a>  <strong class="jxr_keyword">import</strong> org.apache.commons.cli.DefaultParser;
 <a class="jxr_linenumber" name="L35" href="#L35">35</a>  <strong class="jxr_keyword">import</strong> org.apache.commons.cli.ParseException;
 <a class="jxr_linenumber" name="L36" href="#L36">36</a>  <strong class="jxr_keyword">import</strong> org.apache.commons.io.FileUtils;
-<a class="jxr_linenumber" name="L37" href="#L37">37</a>  <strong class="jxr_keyword">import</strong> org.junit.jupiter.api.Test;
-<a class="jxr_linenumber" name="L38" href="#L38">38</a>  
-<a class="jxr_linenumber" name="L39" href="#L39">39</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a name="ReportTest" href="../../../org/apache/rat/ReportTest.html#ReportTest">ReportTest</a> {
-<a class="jxr_linenumber" name="L40" href="#L40">40</a>      @Test
-<a class="jxr_linenumber" name="L41" href="#L41">41</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> parseExclusionsForCLIUsage() {
-<a class="jxr_linenumber" name="L42" href="#L42">42</a>          <strong class="jxr_keyword">final</strong> FilenameFilter filter = Report
-<a class="jxr_linenumber" name="L43" href="#L43">43</a>                  .parseExclusions(Arrays.asList(<span class="jxr_string">""</span>, <span class="jxr_string">" # foo/bar"</span>, <span class="jxr_string">"foo"</span>, <span class="jxr_string">"##"</span>, <span class="jxr_string">" ./foo/bar"</span>));
-<a class="jxr_linenumber" name="L44" href="#L44">44</a>          assertNotNull(filter);
-<a class="jxr_linenumber" name="L45" href="#L45">45</a>      }
-<a class="jxr_linenumber" name="L46" href="#L46">46</a>      
-<a class="jxr_linenumber" name="L47" href="#L47">47</a>      @Test
-<a class="jxr_linenumber" name="L48" href="#L48">48</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testDefaultConfiguration() <strong class="jxr_keyword">throws</strong> ParseException, IOException {
-<a class="jxr_linenumber" name="L49" href="#L49">49</a>          String[] empty = {};
-<a class="jxr_linenumber" name="L50" href="#L50">50</a>          CommandLine cl = <strong class="jxr_keyword">new</strong> DefaultParser().parse(Report.buildOptions(), empty);
-<a class="jxr_linenumber" name="L51" href="#L51">51</a>          ReportConfiguration config = Report.createConfiguration(<span class="jxr_string">""</span>, cl);
-<a class="jxr_linenumber" name="L52" href="#L52">52</a>          ReportConfigurationTest.validateDefault(config);
-<a class="jxr_linenumber" name="L53" href="#L53">53</a>      }
-<a class="jxr_linenumber" name="L54" href="#L54">54</a>  
-<a class="jxr_linenumber" name="L55" href="#L55">55</a>      @Test
-<a class="jxr_linenumber" name="L56" href="#L56">56</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testOutputOption() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="L57" href="#L57">57</a>          CommandLine cl = <strong class="jxr_keyword">new</strong> DefaultParser().parse(Report.buildOptions(), <strong class="jxr_keyword">new</strong> String[]{ <span class="jxr_string">"-o"</span>, <span class="jxr_string">"target/test"</span> });
-<a class="jxr_linenumber" name="L58" href="#L58">58</a>          ReportConfiguration config = Report.createConfiguration(<span class="jxr_string">"target/test-classes/elements"</span>, cl);
-<a class="jxr_linenumber" name="L59" href="#L59">59</a>          Reporter.report(config);
-<a class="jxr_linenumber" name="L60" href="#L60">60</a>          File output = <strong class="jxr_keyword">new</strong> File(<span class="jxr_string">"target/test"</span>);
-<a class="jxr_linenumber" name="L61" href="#L61">61</a>          assertTrue(output.exists());
-<a class="jxr_linenumber" name="L62" href="#L62">62</a>          String content = FileUtils.readFileToString(output, StandardCharsets.UTF_8);
-<a class="jxr_linenumber" name="L63" href="#L63">63</a>          assertTrue(content.contains(<span class="jxr_string">"2 Unknown Licenses"</span>));
-<a class="jxr_linenumber" name="L64" href="#L64">64</a>          assertTrue(content.contains(<span class="jxr_string">"target/test-classes/elements/Source.java"</span>));
-<a class="jxr_linenumber" name="L65" href="#L65">65</a>          assertTrue(content.contains(<span class="jxr_string">"target/test-classes/elements/sub/Empty.txt"</span>));
-<a class="jxr_linenumber" name="L66" href="#L66">66</a>      }
-<a class="jxr_linenumber" name="L67" href="#L67">67</a>  
-<a class="jxr_linenumber" name="L68" href="#L68">68</a>      @Test
-<a class="jxr_linenumber" name="L69" href="#L69">69</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testDefaultOutput() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="L70" href="#L70">70</a>          PrintStream origin = System.out;
-<a class="jxr_linenumber" name="L71" href="#L71">71</a>          File output = <strong class="jxr_keyword">new</strong> File(<span class="jxr_string">"target/sysout"</span>);
-<a class="jxr_linenumber" name="L72" href="#L72">72</a>          System.setOut(<strong class="jxr_keyword">new</strong> PrintStream(output));
-<a class="jxr_linenumber" name="L73" href="#L73">73</a>          CommandLine cl = <strong class="jxr_keyword">new</strong> DefaultParser().parse(Report.buildOptions(), <strong class="jxr_keyword">new</strong> String[]{});
-<a class="jxr_linenumber" name="L74" href="#L74">74</a>          ReportConfiguration config = Report.createConfiguration(<span class="jxr_string">"target/test-classes/elements"</span>, cl);
-<a class="jxr_linenumber" name="L75" href="#L75">75</a>          Reporter.report(config);
-<a class="jxr_linenumber" name="L76" href="#L76">76</a>          assertTrue(output.exists());
-<a class="jxr_linenumber" name="L77" href="#L77">77</a>          String content = FileUtils.readFileToString(output, StandardCharsets.UTF_8);
-<a class="jxr_linenumber" name="L78" href="#L78">78</a>          assertTrue(content.contains(<span class="jxr_string">"2 Unknown Licenses"</span>));
-<a class="jxr_linenumber" name="L79" href="#L79">79</a>          assertTrue(content.contains(<span class="jxr_string">"target/test-classes/elements/Source.java"</span>));
-<a class="jxr_linenumber" name="L80" href="#L80">80</a>          assertTrue(content.contains(<span class="jxr_string">"target/test-classes/elements/sub/Empty.txt"</span>));
-<a class="jxr_linenumber" name="L81" href="#L81">81</a>          System.setOut(origin);
-<a class="jxr_linenumber" name="L82" href="#L82">82</a>      }
-<a class="jxr_linenumber" name="L83" href="#L83">83</a>  
-<a class="jxr_linenumber" name="L84" href="#L84">84</a>  }
+<a class="jxr_linenumber" name="L37" href="#L37">37</a>  <strong class="jxr_keyword">import</strong> org.junit.jupiter.api.Disabled;
+<a class="jxr_linenumber" name="L38" href="#L38">38</a>  <strong class="jxr_keyword">import</strong> org.junit.jupiter.api.Test;
+<a class="jxr_linenumber" name="L39" href="#L39">39</a>  
+<a class="jxr_linenumber" name="L40" href="#L40">40</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a name="ReportTest" href="../../../org/apache/rat/ReportTest.html#ReportTest">ReportTest</a> {
+<a class="jxr_linenumber" name="L41" href="#L41">41</a>      @Test
+<a class="jxr_linenumber" name="L42" href="#L42">42</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> parseExclusionsForCLIUsage() {
+<a class="jxr_linenumber" name="L43" href="#L43">43</a>          <strong class="jxr_keyword">final</strong> FilenameFilter filter = Report
+<a class="jxr_linenumber" name="L44" href="#L44">44</a>                  .parseExclusions(Arrays.asList(<span class="jxr_string">""</span>, <span class="jxr_string">" # foo/bar"</span>, <span class="jxr_string">"foo"</span>, <span class="jxr_string">"##"</span>, <span class="jxr_string">" ./foo/bar"</span>));
+<a class="jxr_linenumber" name="L45" href="#L45">45</a>          assertNotNull(filter);
+<a class="jxr_linenumber" name="L46" href="#L46">46</a>      }
+<a class="jxr_linenumber" name="L47" href="#L47">47</a>      
+<a class="jxr_linenumber" name="L48" href="#L48">48</a>      @Test
+<a class="jxr_linenumber" name="L49" href="#L49">49</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testDefaultConfiguration() <strong class="jxr_keyword">throws</strong> ParseException, IOException {
+<a class="jxr_linenumber" name="L50" href="#L50">50</a>          String[] empty = {};
+<a class="jxr_linenumber" name="L51" href="#L51">51</a>          CommandLine cl = <strong class="jxr_keyword">new</strong> DefaultParser().parse(Report.buildOptions(), empty);
+<a class="jxr_linenumber" name="L52" href="#L52">52</a>          ReportConfiguration config = Report.createConfiguration(<span class="jxr_string">""</span>, cl);
+<a class="jxr_linenumber" name="L53" href="#L53">53</a>          ReportConfigurationTest.validateDefault(config);
+<a class="jxr_linenumber" name="L54" href="#L54">54</a>      }
+<a class="jxr_linenumber" name="L55" href="#L55">55</a>  
+<a class="jxr_linenumber" name="L56" href="#L56">56</a>      @Test
+<a class="jxr_linenumber" name="L57" href="#L57">57</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testOutputOption() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="L58" href="#L58">58</a>          CommandLine cl = <strong class="jxr_keyword">new</strong> DefaultParser().parse(Report.buildOptions(), <strong class="jxr_keyword">new</strong> String[]{ <span class="jxr_string">"-o"</span>, <span class="jxr_string">"target/test"</span> });
+<a class="jxr_linenumber" name="L59" href="#L59">59</a>          ReportConfiguration config = Report.createConfiguration(<span class="jxr_string">"target/test-classes/elements"</span>, cl);
+<a class="jxr_linenumber" name="L60" href="#L60">60</a>          Reporter.report(config);
+<a class="jxr_linenumber" name="L61" href="#L61">61</a>          File output = <strong class="jxr_keyword">new</strong> File(<span class="jxr_string">"target/test"</span>);
+<a class="jxr_linenumber" name="L62" href="#L62">62</a>          assertTrue(output.exists());
+<a class="jxr_linenumber" name="L63" href="#L63">63</a>          String content = FileUtils.readFileToString(output, StandardCharsets.UTF_8);
+<a class="jxr_linenumber" name="L64" href="#L64">64</a>          assertTrue(content.contains(<span class="jxr_string">"2 Unknown Licenses"</span>));
+<a class="jxr_linenumber" name="L65" href="#L65">65</a>          assertTrue(content.contains(<span class="jxr_string">"target/test-classes/elements/Source.java"</span>));
+<a class="jxr_linenumber" name="L66" href="#L66">66</a>          assertTrue(content.contains(<span class="jxr_string">"target/test-classes/elements/sub/Empty.txt"</span>));
+<a class="jxr_linenumber" name="L67" href="#L67">67</a>      }
+<a class="jxr_linenumber" name="L68" href="#L68">68</a>  
+<a class="jxr_linenumber" name="L69" href="#L69">69</a>      @Test
+<a class="jxr_linenumber" name="L70" href="#L70">70</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testDefaultOutput() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="L71" href="#L71">71</a>          
+<a class="jxr_linenumber" name="L72" href="#L72">72</a>          PrintStream origin = System.out;
+<a class="jxr_linenumber" name="L73" href="#L73">73</a>          <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="L74" href="#L74">74</a>              File output = <strong class="jxr_keyword">new</strong> File(<span class="jxr_string">"target/sysout"</span>);
+<a class="jxr_linenumber" name="L75" href="#L75">75</a>              System.setOut(<strong class="jxr_keyword">new</strong> PrintStream(output));
+<a class="jxr_linenumber" name="L76" href="#L76">76</a>              CommandLine cl = <strong class="jxr_keyword">new</strong> DefaultParser().parse(Report.buildOptions(), <strong class="jxr_keyword">new</strong> String[]{});
+<a class="jxr_linenumber" name="L77" href="#L77">77</a>              ReportConfiguration config = Report.createConfiguration(<span class="jxr_string">"target/test-classes/elements"</span>, cl);
+<a class="jxr_linenumber" name="L78" href="#L78">78</a>              Reporter.report(config);
+<a class="jxr_linenumber" name="L79" href="#L79">79</a>              assertTrue(output.exists());
+<a class="jxr_linenumber" name="L80" href="#L80">80</a>              String content = FileUtils.readFileToString(output, StandardCharsets.UTF_8);
+<a class="jxr_linenumber" name="L81" href="#L81">81</a>              assertTrue(content.contains(<span class="jxr_string">"2 Unknown Licenses"</span>));
+<a class="jxr_linenumber" name="L82" href="#L82">82</a>              assertTrue(content.contains(<span class="jxr_string">"target/test-classes/elements/Source.java"</span>));
+<a class="jxr_linenumber" name="L83" href="#L83">83</a>              assertTrue(content.contains(<span class="jxr_string">"target/test-classes/elements/sub/Empty.txt"</span>));
+<a class="jxr_linenumber" name="L84" href="#L84">84</a>          } <strong class="jxr_keyword">finally</strong> {
+<a class="jxr_linenumber" name="L85" href="#L85">85</a>              System.setOut(origin);
+<a class="jxr_linenumber" name="L86" href="#L86">86</a>          }
+<a class="jxr_linenumber" name="L87" href="#L87">87</a>      }
+<a class="jxr_linenumber" name="L88" href="#L88">88</a>  
+<a class="jxr_linenumber" name="L89" href="#L89">89</a>  }
 </pre>
 <hr/>
 <div id="footer">Copyright &#169; 2006&#x2013;2024 <a href="https://www.apache.org">Apache Software Foundation</a>. All rights reserved.</div>
diff --git a/rat0161/apache-rat-core/xref-test/org/apache/rat/ReporterTest.html b/rat0161/apache-rat-core/xref-test/org/apache/rat/ReporterTest.html
index 93fab76e..b3e8d9cc 100644
--- a/rat0161/apache-rat-core/xref-test/org/apache/rat/ReporterTest.html
+++ b/rat0161/apache-rat-core/xref-test/org/apache/rat/ReporterTest.html
@@ -43,105 +43,109 @@
 <a class="jxr_linenumber" name="L35" href="#L35">35</a>  <strong class="jxr_keyword">import</strong> org.apache.rat.testhelpers.XmlUtils;
 <a class="jxr_linenumber" name="L36" href="#L36">36</a>  <strong class="jxr_keyword">import</strong> org.apache.rat.utils.DefaultLog;
 <a class="jxr_linenumber" name="L37" href="#L37">37</a>  <strong class="jxr_keyword">import</strong> org.apache.rat.walker.DirectoryWalker;
-<a class="jxr_linenumber" name="L38" href="#L38">38</a>  <strong class="jxr_keyword">import</strong> org.junit.jupiter.api.Test;
-<a class="jxr_linenumber" name="L39" href="#L39">39</a>  <strong class="jxr_keyword">import</strong> org.w3c.dom.Document;
-<a class="jxr_linenumber" name="L40" href="#L40">40</a>  <strong class="jxr_keyword">import</strong> org.w3c.dom.NodeList;
-<a class="jxr_linenumber" name="L41" href="#L41">41</a>  
-<a class="jxr_linenumber" name="L42" href="#L42">42</a>  <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L43" href="#L43">43</a>  <em class="jxr_javadoccomment"> * Tests the output of the Reporter.</em>
-<a class="jxr_linenumber" name="L44" href="#L44">44</a>  <em class="jxr_javadoccomment"> */</em>
-<a class="jxr_linenumber" name="L45" href="#L45">45</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a name="ReporterTest" href="../../../org/apache/rat/ReporterTest.html#ReporterTest">ReporterTest</a> {
-<a class="jxr_linenumber" name="L46" href="#L46">46</a>  
-<a class="jxr_linenumber" name="L47" href="#L47">47</a>      @Test
-<a class="jxr_linenumber" name="L48" href="#L48">48</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> xmlReportTest() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="L49" href="#L49">49</a>          Defaults defaults = Defaults.builder().build();
-<a class="jxr_linenumber" name="L50" href="#L50">50</a>          ByteArrayOutputStream out = <strong class="jxr_keyword">new</strong> ByteArrayOutputStream();
-<a class="jxr_linenumber" name="L51" href="#L51">51</a>  
-<a class="jxr_linenumber" name="L52" href="#L52">52</a>          <strong class="jxr_keyword">final</strong> String elementsPath = Resources.getResourceDirectory(<span class="jxr_string">"elements/Source.java"</span>);
-<a class="jxr_linenumber" name="L53" href="#L53">53</a>          <strong class="jxr_keyword">final</strong> ReportConfiguration configuration = <strong class="jxr_keyword">new</strong> ReportConfiguration(DefaultLog.INSTANCE);
-<a class="jxr_linenumber" name="L54" href="#L54">54</a>          configuration.setStyleReport(false);
-<a class="jxr_linenumber" name="L55" href="#L55">55</a>          configuration.setFrom(defaults);
-<a class="jxr_linenumber" name="L56" href="#L56">56</a>          configuration.setReportable(<strong class="jxr_keyword">new</strong> DirectoryWalker(<strong class="jxr_keyword">new</strong> File(elementsPath), HiddenFileFilter.HIDDEN));
-<a class="jxr_linenumber" name="L57" href="#L57">57</a>          configuration.setOut(() -&gt; out);
-<a class="jxr_linenumber" name="L58" href="#L58">58</a>          Reporter.report(configuration);
-<a class="jxr_linenumber" name="L59" href="#L59">59</a>          Document doc = XmlUtils.toDom(<strong class="jxr_keyword">new</strong> ByteArrayInputStream(out.toByteArray()));
-<a class="jxr_linenumber" name="L60" href="#L60">60</a>          XPath xPath = XPathFactory.newInstance().newXPath();
-<a class="jxr_linenumber" name="L61" href="#L61">61</a>  
-<a class="jxr_linenumber" name="L62" href="#L62">62</a>          XmlUtils.getNode(doc, xPath, <span class="jxr_string">"/rat-report[@timestamp]"</span>);
+<a class="jxr_linenumber" name="L38" href="#L38">38</a>  <strong class="jxr_keyword">import</strong> org.junit.jupiter.api.Disabled;
+<a class="jxr_linenumber" name="L39" href="#L39">39</a>  <strong class="jxr_keyword">import</strong> org.junit.jupiter.api.Test;
+<a class="jxr_linenumber" name="L40" href="#L40">40</a>  <strong class="jxr_keyword">import</strong> org.w3c.dom.Document;
+<a class="jxr_linenumber" name="L41" href="#L41">41</a>  <strong class="jxr_keyword">import</strong> org.w3c.dom.NodeList;
+<a class="jxr_linenumber" name="L42" href="#L42">42</a>  
+<a class="jxr_linenumber" name="L43" href="#L43">43</a>  <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L44" href="#L44">44</a>  <em class="jxr_javadoccomment"> * Tests the output of the Reporter.</em>
+<a class="jxr_linenumber" name="L45" href="#L45">45</a>  <em class="jxr_javadoccomment"> */</em>
+<a class="jxr_linenumber" name="L46" href="#L46">46</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a name="ReporterTest" href="../../../org/apache/rat/ReporterTest.html#ReporterTest">ReporterTest</a> {
+<a class="jxr_linenumber" name="L47" href="#L47">47</a>  
+<a class="jxr_linenumber" name="L48" href="#L48">48</a>      @Test
+<a class="jxr_linenumber" name="L49" href="#L49">49</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> xmlReportTest() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="L50" href="#L50">50</a>          Defaults defaults = Defaults.builder().build();
+<a class="jxr_linenumber" name="L51" href="#L51">51</a>          ByteArrayOutputStream out = <strong class="jxr_keyword">new</strong> ByteArrayOutputStream();
+<a class="jxr_linenumber" name="L52" href="#L52">52</a>  
+<a class="jxr_linenumber" name="L53" href="#L53">53</a>          <strong class="jxr_keyword">final</strong> String elementsPath = Resources.getResourceDirectory(<span class="jxr_string">"elements/Source.java"</span>);
+<a class="jxr_linenumber" name="L54" href="#L54">54</a>          <strong class="jxr_keyword">final</strong> ReportConfiguration configuration = <strong class="jxr_keyword">new</strong> ReportConfiguration(DefaultLog.INSTANCE);
+<a class="jxr_linenumber" name="L55" href="#L55">55</a>          configuration.setStyleReport(false);
+<a class="jxr_linenumber" name="L56" href="#L56">56</a>          configuration.setFrom(defaults);
+<a class="jxr_linenumber" name="L57" href="#L57">57</a>          configuration.setReportable(<strong class="jxr_keyword">new</strong> DirectoryWalker(<strong class="jxr_keyword">new</strong> File(elementsPath), HiddenFileFilter.HIDDEN));
+<a class="jxr_linenumber" name="L58" href="#L58">58</a>          configuration.setOut(() -&gt; out);
+<a class="jxr_linenumber" name="L59" href="#L59">59</a>          Reporter.report(configuration);
+<a class="jxr_linenumber" name="L60" href="#L60">60</a>          Document doc = XmlUtils.toDom(<strong class="jxr_keyword">new</strong> ByteArrayInputStream(out.toByteArray()));
+<a class="jxr_linenumber" name="L61" href="#L61">61</a>          
+<a class="jxr_linenumber" name="L62" href="#L62">62</a>          XPath xPath = XPathFactory.newInstance().newXPath();
 <a class="jxr_linenumber" name="L63" href="#L63">63</a>  
-<a class="jxr_linenumber" name="L64" href="#L64">64</a>          XmlUtils.checkNode(doc, xPath, <span class="jxr_string">"src/test/resources/elements/ILoggerFactory.java"</span>, <span class="jxr_string">"MIT"</span>, <span class="jxr_string">"true"</span>, <span class="jxr_string">"standard"</span>);
-<a class="jxr_linenumber" name="L65" href="#L65">65</a>          XmlUtils.checkNode(doc, xPath, <span class="jxr_string">"src/test/resources/elements/Image.png"</span>, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>, <span class="jxr_string">"binary"</span>);
-<a class="jxr_linenumber" name="L66" href="#L66">66</a>          XmlUtils.checkNode(doc, xPath, <span class="jxr_string">"src/test/resources/elements/LICENSE"</span>, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>, <span class="jxr_string">"notice"</span>);
-<a class="jxr_linenumber" name="L67" href="#L67">67</a>          XmlUtils.checkNode(doc, xPath, <span class="jxr_string">"src/test/resources/elements/NOTICE"</span>, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>, <span class="jxr_string">"notice"</span>);
-<a class="jxr_linenumber" name="L68" href="#L68">68</a>          XmlUtils.checkNode(doc, xPath, <span class="jxr_string">"src/test/resources/elements/Source.java"</span>, <span class="jxr_string">"?????"</span>, <span class="jxr_string">"false"</span>, <span class="jxr_string">"standard"</span>);
-<a class="jxr_linenumber" name="L69" href="#L69">69</a>          XmlUtils.checkNode(doc, xPath, <span class="jxr_string">"src/test/resources/elements/Text.txt"</span>, <span class="jxr_string">"AL"</span>, <span class="jxr_string">"true"</span>, <span class="jxr_string">"standard"</span>);
-<a class="jxr_linenumber" name="L70" href="#L70">70</a>          XmlUtils.checkNode(doc, xPath, <span class="jxr_string">"src/test/resources/elements/TextHttps.txt"</span>, <span class="jxr_string">"AL"</span>, <span class="jxr_string">"true"</span>, <span class="jxr_string">"standard"</span>);
-<a class="jxr_linenumber" name="L71" href="#L71">71</a>          XmlUtils.checkNode(doc, xPath, <span class="jxr_string">"src/test/resources/elements/Xml.xml"</span>, <span class="jxr_string">"AL"</span>, <span class="jxr_string">"true"</span>, <span class="jxr_string">"standard"</span>);
-<a class="jxr_linenumber" name="L72" href="#L72">72</a>          XmlUtils.checkNode(doc, xPath, <span class="jxr_string">"src/test/resources/elements/buildr.rb"</span>, <span class="jxr_string">"AL"</span>, <span class="jxr_string">"true"</span>, <span class="jxr_string">"standard"</span>);
-<a class="jxr_linenumber" name="L73" href="#L73">73</a>          XmlUtils.checkNode(doc, xPath, <span class="jxr_string">"src/test/resources/elements/dummy.jar"</span>, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>, <span class="jxr_string">"archive"</span>);
-<a class="jxr_linenumber" name="L74" href="#L74">74</a>          XmlUtils.checkNode(doc, xPath, <span class="jxr_string">"src/test/resources/elements/plain.json"</span>, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>, <span class="jxr_string">"binary"</span>);
-<a class="jxr_linenumber" name="L75" href="#L75">75</a>          XmlUtils.checkNode(doc, xPath, <span class="jxr_string">"src/test/resources/elements/sub/Empty.txt"</span>, <span class="jxr_string">"?????"</span>, <span class="jxr_string">"false"</span>, <span class="jxr_string">"standard"</span>);
-<a class="jxr_linenumber" name="L76" href="#L76">76</a>  
-<a class="jxr_linenumber" name="L77" href="#L77">77</a>          NodeList nodeList = (NodeList) xPath.compile(<span class="jxr_string">"/rat-report/resource"</span>).evaluate(doc, XPathConstants.NODESET);
-<a class="jxr_linenumber" name="L78" href="#L78">78</a>          assertEquals(12, nodeList.getLength());
-<a class="jxr_linenumber" name="L79" href="#L79">79</a>      }
-<a class="jxr_linenumber" name="L80" href="#L80">80</a>  
-<a class="jxr_linenumber" name="L81" href="#L81">81</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String NL = System.getProperty(<span class="jxr_string">"line.separator"</span>);
-<a class="jxr_linenumber" name="L82" href="#L82">82</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String PARAGRAPH = <span class="jxr_string">"*****************************************************"</span>;
-<a class="jxr_linenumber" name="L83" href="#L83">83</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String HEADER = NL + PARAGRAPH + NL + <em class="jxr_comment">//</em>
-<a class="jxr_linenumber" name="L84" href="#L84">84</a>              <span class="jxr_string">"Summary"</span> + NL + <em class="jxr_comment">//</em>
-<a class="jxr_linenumber" name="L85" href="#L85">85</a>              <span class="jxr_string">"-------"</span> + NL + <em class="jxr_comment">//</em>
-<a class="jxr_linenumber" name="L86" href="#L86">86</a>              <span class="jxr_string">"Generated at: "</span>;
-<a class="jxr_linenumber" name="L87" href="#L87">87</a>  
-<a class="jxr_linenumber" name="L88" href="#L88">88</a>      @Test
-<a class="jxr_linenumber" name="L89" href="#L89">89</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> plainReportWithArchivesAndUnapprovedLicenses() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="L90" href="#L90">90</a>          Defaults defaults = Defaults.builder().build();
-<a class="jxr_linenumber" name="L91" href="#L91">91</a>          ByteArrayOutputStream out = <strong class="jxr_keyword">new</strong> ByteArrayOutputStream();
-<a class="jxr_linenumber" name="L92" href="#L92">92</a>  
-<a class="jxr_linenumber" name="L93" href="#L93">93</a>          <strong class="jxr_keyword">final</strong> String elementsPath = Resources.getResourceDirectory(<span class="jxr_string">"elements/Source.java"</span>);
-<a class="jxr_linenumber" name="L94" href="#L94">94</a>          <strong class="jxr_keyword">final</strong> ReportConfiguration configuration = <strong class="jxr_keyword">new</strong> ReportConfiguration(DefaultLog.INSTANCE);
-<a class="jxr_linenumber" name="L95" href="#L95">95</a>          configuration.setFrom(defaults);
-<a class="jxr_linenumber" name="L96" href="#L96">96</a>          configuration.setReportable(<strong class="jxr_keyword">new</strong> DirectoryWalker(<strong class="jxr_keyword">new</strong> File(elementsPath), HiddenFileFilter.HIDDEN));
-<a class="jxr_linenumber" name="L97" href="#L97">97</a>          configuration.setOut(() -&gt; out);
-<a class="jxr_linenumber" name="L98" href="#L98">98</a>          Reporter.report(configuration);
-<a class="jxr_linenumber" name="L99" href="#L99">99</a>  
-<a class="jxr_linenumber" name="L100" href="#L100">100</a>         String document = out.toString();
-<a class="jxr_linenumber" name="L101" href="#L101">101</a>         <em class="jxr_comment">// System.out.println(document);</em>
-<a class="jxr_linenumber" name="L102" href="#L102">102</a>         assertTrue(document.startsWith(HEADER), <span class="jxr_string">"'Generated at' is present in "</span> + document );
-<a class="jxr_linenumber" name="L103" href="#L103">103</a> 
-<a class="jxr_linenumber" name="L104" href="#L104">104</a>         <em class="jxr_comment">// final int generatedAtLineEnd = document.indexOf(NL, HEADER.length());</em>
-<a class="jxr_linenumber" name="L105" href="#L105">105</a>         find(<span class="jxr_string">"^Notes: 2$"</span>, document);
-<a class="jxr_linenumber" name="L106" href="#L106">106</a>         find(<span class="jxr_string">"^Binaries: 2$"</span>, document);
-<a class="jxr_linenumber" name="L107" href="#L107">107</a>         find(<span class="jxr_string">"^Archives: 1$"</span>, document);
-<a class="jxr_linenumber" name="L108" href="#L108">108</a>         find(<span class="jxr_string">"^Standards: 7$"</span>, document);
-<a class="jxr_linenumber" name="L109" href="#L109">109</a>         find(<span class="jxr_string">"^Apache Licensed: 4$"</span>, document);
-<a class="jxr_linenumber" name="L110" href="#L110">110</a>         find(<span class="jxr_string">"^Generated Documents: 0$"</span>, document);
-<a class="jxr_linenumber" name="L111" href="#L111">111</a>         find(<span class="jxr_string">"^2 Unknown Licenses$"</span>, document);
-<a class="jxr_linenumber" name="L112" href="#L112">112</a>         find(<span class="jxr_string">"^Files with unapproved licenses:&#92;&#92;s+"</span>
-<a class="jxr_linenumber" name="L113" href="#L113">113</a>                 + <span class="jxr_string">"src/test/resources/elements/Source.java&#92;&#92;s+"</span> 
-<a class="jxr_linenumber" name="L114" href="#L114">114</a>                 + <span class="jxr_string">"src/test/resources/elements/sub/Empty.txt&#92;&#92;s"</span>,
-<a class="jxr_linenumber" name="L115" href="#L115">115</a>                 document);
-<a class="jxr_linenumber" name="L116" href="#L116">116</a>         find(<span class="jxr_string">"^Archives:&#92;&#92;s+"</span> + <span class="jxr_string">"&#92;&#92;+ src/test/resources/elements/dummy.jar&#92;&#92;s*"</span>, document);
-<a class="jxr_linenumber" name="L117" href="#L117">117</a>         find(<span class="jxr_string">"MIT&#92;&#92;s+src/test/resources/elements/ILoggerFactory.java"</span>, document);
-<a class="jxr_linenumber" name="L118" href="#L118">118</a>         find(<span class="jxr_string">"B&#92;&#92;s+src/test/resources/elements/Image.png"</span>, document);
-<a class="jxr_linenumber" name="L119" href="#L119">119</a>         find(<span class="jxr_string">"N&#92;&#92;s+src/test/resources/elements/LICENSE"</span>, document);
-<a class="jxr_linenumber" name="L120" href="#L120">120</a>         find(<span class="jxr_string">"N&#92;&#92;s+src/test/resources/elements/NOTICE"</span>, document);
-<a class="jxr_linenumber" name="L121" href="#L121">121</a>         find(<span class="jxr_string">"!&#92;&#92;Q?????&#92;&#92;E&#92;&#92;s+src/test/resources/elements/Source.java"</span>, document);
-<a class="jxr_linenumber" name="L122" href="#L122">122</a>         find(<span class="jxr_string">"AL&#92;&#92;s+src/test/resources/elements/Text.txt"</span>, document);
-<a class="jxr_linenumber" name="L123" href="#L123">123</a>         find(<span class="jxr_string">"AL&#92;&#92;s+src/test/resources/elements/TextHttps.txt"</span>, document);
-<a class="jxr_linenumber" name="L124" href="#L124">124</a>         find(<span class="jxr_string">"AL&#92;&#92;s+src/test/resources/elements/Xml.xml"</span>, document);
-<a class="jxr_linenumber" name="L125" href="#L125">125</a>         find(<span class="jxr_string">"AL&#92;&#92;s+src/test/resources/elements/buildr.rb"</span>, document);
-<a class="jxr_linenumber" name="L126" href="#L126">126</a>         find(<span class="jxr_string">"A&#92;&#92;s+src/test/resources/elements/dummy.jar"</span>, document);
-<a class="jxr_linenumber" name="L127" href="#L127">127</a>         find(<span class="jxr_string">"B&#92;&#92;s+src/test/resources/elements/plain.json"</span>, document);
-<a class="jxr_linenumber" name="L128" href="#L128">128</a>         find(<span class="jxr_string">"!&#92;&#92;Q?????&#92;&#92;E&#92;&#92;s+src/test/resources/elements/sub/Empty.txt"</span>, document);
-<a class="jxr_linenumber" name="L129" href="#L129">129</a>         find(<span class="jxr_string">"== File: src/test/resources/elements/sub/Empty.txt"</span>, document);
-<a class="jxr_linenumber" name="L130" href="#L130">130</a>     }
-<a class="jxr_linenumber" name="L131" href="#L131">131</a> 
-<a class="jxr_linenumber" name="L132" href="#L132">132</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> find(String pattern, String document) {
-<a class="jxr_linenumber" name="L133" href="#L133">133</a>         assertTrue(
-<a class="jxr_linenumber" name="L134" href="#L134">134</a>                 Pattern.compile(pattern, Pattern.MULTILINE).matcher(document).find(), () -&gt;String.format(<span class="jxr_string">"Could not find '%s'"</span>, pattern));
-<a class="jxr_linenumber" name="L135" href="#L135">135</a>     }
-<a class="jxr_linenumber" name="L136" href="#L136">136</a> }
+<a class="jxr_linenumber" name="L64" href="#L64">64</a>          XmlUtils.getNode(doc, xPath, <span class="jxr_string">"/rat-report[@timestamp]"</span>);
+<a class="jxr_linenumber" name="L65" href="#L65">65</a>  
+<a class="jxr_linenumber" name="L66" href="#L66">66</a>          XmlUtils.checkNode(doc, xPath, <span class="jxr_string">"src/test/resources/elements/ILoggerFactory.java"</span>, <span class="jxr_string">"MIT"</span>, <span class="jxr_string">"true"</span>, <span class="jxr_string">"standard"</span>);
+<a class="jxr_linenumber" name="L67" href="#L67">67</a>          XmlUtils.checkNode(doc, xPath, <span class="jxr_string">"src/test/resources/elements/Image.png"</span>, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>, <span class="jxr_string">"binary"</span>);
+<a class="jxr_linenumber" name="L68" href="#L68">68</a>          XmlUtils.checkNode(doc, xPath, <span class="jxr_string">"src/test/resources/elements/LICENSE"</span>, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>, <span class="jxr_string">"notice"</span>);
+<a class="jxr_linenumber" name="L69" href="#L69">69</a>          XmlUtils.checkNode(doc, xPath, <span class="jxr_string">"src/test/resources/elements/NOTICE"</span>, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>, <span class="jxr_string">"notice"</span>);
+<a class="jxr_linenumber" name="L70" href="#L70">70</a>          XmlUtils.checkNode(doc, xPath, <span class="jxr_string">"src/test/resources/elements/Source.java"</span>, <span class="jxr_string">"?????"</span>, <span class="jxr_string">"false"</span>, <span class="jxr_string">"standard"</span>);
+<a class="jxr_linenumber" name="L71" href="#L71">71</a>          XmlUtils.checkNode(doc, xPath, <span class="jxr_string">"src/test/resources/elements/Text.txt"</span>, <span class="jxr_string">"AL"</span>, <span class="jxr_string">"true"</span>, <span class="jxr_string">"standard"</span>);
+<a class="jxr_linenumber" name="L72" href="#L72">72</a>          XmlUtils.checkNode(doc, xPath, <span class="jxr_string">"src/test/resources/elements/TextHttps.txt"</span>, <span class="jxr_string">"AL"</span>, <span class="jxr_string">"true"</span>, <span class="jxr_string">"standard"</span>);
+<a class="jxr_linenumber" name="L73" href="#L73">73</a>          XmlUtils.checkNode(doc, xPath, <span class="jxr_string">"src/test/resources/elements/Xml.xml"</span>, <span class="jxr_string">"AL"</span>, <span class="jxr_string">"true"</span>, <span class="jxr_string">"standard"</span>);
+<a class="jxr_linenumber" name="L74" href="#L74">74</a>          XmlUtils.checkNode(doc, xPath, <span class="jxr_string">"src/test/resources/elements/buildr.rb"</span>, <span class="jxr_string">"AL"</span>, <span class="jxr_string">"true"</span>, <span class="jxr_string">"standard"</span>);
+<a class="jxr_linenumber" name="L75" href="#L75">75</a>          XmlUtils.checkNode(doc, xPath, <span class="jxr_string">"src/test/resources/elements/dummy.jar"</span>, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>, <span class="jxr_string">"archive"</span>);
+<a class="jxr_linenumber" name="L76" href="#L76">76</a>          XmlUtils.checkNode(doc, xPath, <span class="jxr_string">"src/test/resources/elements/plain.json"</span>, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>, <span class="jxr_string">"binary"</span>);
+<a class="jxr_linenumber" name="L77" href="#L77">77</a>          XmlUtils.checkNode(doc, xPath, <span class="jxr_string">"src/test/resources/elements/sub/Empty.txt"</span>, <span class="jxr_string">"?????"</span>, <span class="jxr_string">"false"</span>, <span class="jxr_string">"standard"</span>);
+<a class="jxr_linenumber" name="L78" href="#L78">78</a>  
+<a class="jxr_linenumber" name="L79" href="#L79">79</a>          NodeList nodeList = (NodeList) xPath.compile(<span class="jxr_string">"/rat-report/resource"</span>).evaluate(doc, XPathConstants.NODESET);
+<a class="jxr_linenumber" name="L80" href="#L80">80</a>          assertEquals(12, nodeList.getLength());
+<a class="jxr_linenumber" name="L81" href="#L81">81</a>  
+<a class="jxr_linenumber" name="L82" href="#L82">82</a>      }
+<a class="jxr_linenumber" name="L83" href="#L83">83</a>  
+<a class="jxr_linenumber" name="L84" href="#L84">84</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String NL = System.getProperty(<span class="jxr_string">"line.separator"</span>);
+<a class="jxr_linenumber" name="L85" href="#L85">85</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String PARAGRAPH = <span class="jxr_string">"*****************************************************"</span>;
+<a class="jxr_linenumber" name="L86" href="#L86">86</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String HEADER = NL + PARAGRAPH + NL + <em class="jxr_comment">//</em>
+<a class="jxr_linenumber" name="L87" href="#L87">87</a>              <span class="jxr_string">"Summary"</span> + NL + <em class="jxr_comment">//</em>
+<a class="jxr_linenumber" name="L88" href="#L88">88</a>              <span class="jxr_string">"-------"</span> + NL + <em class="jxr_comment">//</em>
+<a class="jxr_linenumber" name="L89" href="#L89">89</a>              <span class="jxr_string">"Generated at: "</span>;
+<a class="jxr_linenumber" name="L90" href="#L90">90</a>  
+<a class="jxr_linenumber" name="L91" href="#L91">91</a>      @Test
+<a class="jxr_linenumber" name="L92" href="#L92">92</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> plainReportWithArchivesAndUnapprovedLicenses() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="L93" href="#L93">93</a>          Defaults defaults = Defaults.builder().build();
+<a class="jxr_linenumber" name="L94" href="#L94">94</a>          ByteArrayOutputStream out = <strong class="jxr_keyword">new</strong> ByteArrayOutputStream();
+<a class="jxr_linenumber" name="L95" href="#L95">95</a>  
+<a class="jxr_linenumber" name="L96" href="#L96">96</a>          <strong class="jxr_keyword">final</strong> String elementsPath = Resources.getResourceDirectory(<span class="jxr_string">"elements/Source.java"</span>);
+<a class="jxr_linenumber" name="L97" href="#L97">97</a>          <strong class="jxr_keyword">final</strong> ReportConfiguration configuration = <strong class="jxr_keyword">new</strong> ReportConfiguration(DefaultLog.INSTANCE);
+<a class="jxr_linenumber" name="L98" href="#L98">98</a>          configuration.setFrom(defaults);
+<a class="jxr_linenumber" name="L99" href="#L99">99</a>          configuration.setReportable(<strong class="jxr_keyword">new</strong> DirectoryWalker(<strong class="jxr_keyword">new</strong> File(elementsPath), HiddenFileFilter.HIDDEN));
+<a class="jxr_linenumber" name="L100" href="#L100">100</a>         configuration.setOut(() -&gt; out);
+<a class="jxr_linenumber" name="L101" href="#L101">101</a>         Reporter.report(configuration);
+<a class="jxr_linenumber" name="L102" href="#L102">102</a> 
+<a class="jxr_linenumber" name="L103" href="#L103">103</a>         out.flush();
+<a class="jxr_linenumber" name="L104" href="#L104">104</a>         String document = out.toString();
+<a class="jxr_linenumber" name="L105" href="#L105">105</a> 
+<a class="jxr_linenumber" name="L106" href="#L106">106</a>         assertTrue(document.startsWith(HEADER), <span class="jxr_string">"'Generated at' is present in "</span> + document );
+<a class="jxr_linenumber" name="L107" href="#L107">107</a> 
+<a class="jxr_linenumber" name="L108" href="#L108">108</a>         <em class="jxr_comment">// final int generatedAtLineEnd = document.indexOf(NL, HEADER.length());</em>
+<a class="jxr_linenumber" name="L109" href="#L109">109</a>         find(<span class="jxr_string">"^Notes: 2$"</span>, document);
+<a class="jxr_linenumber" name="L110" href="#L110">110</a>         find(<span class="jxr_string">"^Binaries: 2$"</span>, document);
+<a class="jxr_linenumber" name="L111" href="#L111">111</a>         find(<span class="jxr_string">"^Archives: 1$"</span>, document);
+<a class="jxr_linenumber" name="L112" href="#L112">112</a>         find(<span class="jxr_string">"^Standards: 7$"</span>, document);
+<a class="jxr_linenumber" name="L113" href="#L113">113</a>         find(<span class="jxr_string">"^Apache Licensed: 4$"</span>, document);
+<a class="jxr_linenumber" name="L114" href="#L114">114</a>         find(<span class="jxr_string">"^Generated Documents: 0$"</span>, document);
+<a class="jxr_linenumber" name="L115" href="#L115">115</a>         find(<span class="jxr_string">"^2 Unknown Licenses$"</span>, document);
+<a class="jxr_linenumber" name="L116" href="#L116">116</a>         find(<span class="jxr_string">"^Files with unapproved licenses:&#92;&#92;s+"</span>
+<a class="jxr_linenumber" name="L117" href="#L117">117</a>                 + <span class="jxr_string">"src/test/resources/elements/Source.java&#92;&#92;s+"</span> 
+<a class="jxr_linenumber" name="L118" href="#L118">118</a>                 + <span class="jxr_string">"src/test/resources/elements/sub/Empty.txt&#92;&#92;s"</span>,
+<a class="jxr_linenumber" name="L119" href="#L119">119</a>                 document);
+<a class="jxr_linenumber" name="L120" href="#L120">120</a>         find(<span class="jxr_string">"^Archives:&#92;&#92;s+"</span> + <span class="jxr_string">"&#92;&#92;+ src/test/resources/elements/dummy.jar&#92;&#92;s*"</span>, document);
+<a class="jxr_linenumber" name="L121" href="#L121">121</a>         find(<span class="jxr_string">"MIT&#92;&#92;s+src/test/resources/elements/ILoggerFactory.java"</span>, document);
+<a class="jxr_linenumber" name="L122" href="#L122">122</a>         find(<span class="jxr_string">"B&#92;&#92;s+src/test/resources/elements/Image.png"</span>, document);
+<a class="jxr_linenumber" name="L123" href="#L123">123</a>         find(<span class="jxr_string">"N&#92;&#92;s+src/test/resources/elements/LICENSE"</span>, document);
+<a class="jxr_linenumber" name="L124" href="#L124">124</a>         find(<span class="jxr_string">"N&#92;&#92;s+src/test/resources/elements/NOTICE"</span>, document);
+<a class="jxr_linenumber" name="L125" href="#L125">125</a>         find(<span class="jxr_string">"!&#92;&#92;Q?????&#92;&#92;E&#92;&#92;s+src/test/resources/elements/Source.java"</span>, document);
+<a class="jxr_linenumber" name="L126" href="#L126">126</a>         find(<span class="jxr_string">"AL&#92;&#92;s+src/test/resources/elements/Text.txt"</span>, document);
+<a class="jxr_linenumber" name="L127" href="#L127">127</a>         find(<span class="jxr_string">"AL&#92;&#92;s+src/test/resources/elements/TextHttps.txt"</span>, document);
+<a class="jxr_linenumber" name="L128" href="#L128">128</a>         find(<span class="jxr_string">"AL&#92;&#92;s+src/test/resources/elements/Xml.xml"</span>, document);
+<a class="jxr_linenumber" name="L129" href="#L129">129</a>         find(<span class="jxr_string">"AL&#92;&#92;s+src/test/resources/elements/buildr.rb"</span>, document);
+<a class="jxr_linenumber" name="L130" href="#L130">130</a>         find(<span class="jxr_string">"A&#92;&#92;s+src/test/resources/elements/dummy.jar"</span>, document);
+<a class="jxr_linenumber" name="L131" href="#L131">131</a>         find(<span class="jxr_string">"B&#92;&#92;s+src/test/resources/elements/plain.json"</span>, document);
+<a class="jxr_linenumber" name="L132" href="#L132">132</a>         find(<span class="jxr_string">"!&#92;&#92;Q?????&#92;&#92;E&#92;&#92;s+src/test/resources/elements/sub/Empty.txt"</span>, document);
+<a class="jxr_linenumber" name="L133" href="#L133">133</a>         find(<span class="jxr_string">"== File: src/test/resources/elements/sub/Empty.txt"</span>, document);
+<a class="jxr_linenumber" name="L134" href="#L134">134</a>     }
+<a class="jxr_linenumber" name="L135" href="#L135">135</a> 
+<a class="jxr_linenumber" name="L136" href="#L136">136</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> find(String pattern, String document) {
+<a class="jxr_linenumber" name="L137" href="#L137">137</a>         assertTrue(
+<a class="jxr_linenumber" name="L138" href="#L138">138</a>                 Pattern.compile(pattern, Pattern.MULTILINE).matcher(document).find(), () -&gt;String.format(<span class="jxr_string">"Could not find '%s'"</span>, pattern));
+<a class="jxr_linenumber" name="L139" href="#L139">139</a>     }
+<a class="jxr_linenumber" name="L140" href="#L140">140</a> }
 </pre>
 <hr/>
 <div id="footer">Copyright &#169; 2006&#x2013;2024 <a href="https://www.apache.org">Apache Software Foundation</a>. All rights reserved.</div>
diff --git a/rat0161/apache-rat-core/xref-test/org/apache/rat/analysis/AnalyserFactoryTest.html b/rat0161/apache-rat-core/xref-test/org/apache/rat/analysis/AnalyserFactoryTest.html
index 9ef20fbf..e8e71c5f 100644
--- a/rat0161/apache-rat-core/xref-test/org/apache/rat/analysis/AnalyserFactoryTest.html
+++ b/rat0161/apache-rat-core/xref-test/org/apache/rat/analysis/AnalyserFactoryTest.html
@@ -42,99 +42,100 @@
 <a class="jxr_linenumber" name="L34" href="#L34">34</a>  <strong class="jxr_keyword">import</strong> org.apache.rat.report.claim.impl.xml.SimpleXmlClaimReporter;
 <a class="jxr_linenumber" name="L35" href="#L35">35</a>  <strong class="jxr_keyword">import</strong> org.apache.rat.report.xml.writer.impl.base.XmlWriter;
 <a class="jxr_linenumber" name="L36" href="#L36">36</a>  <strong class="jxr_keyword">import</strong> org.apache.rat.test.utils.Resources;
-<a class="jxr_linenumber" name="L37" href="#L37">37</a>  <strong class="jxr_keyword">import</strong> org.junit.jupiter.api.BeforeEach;
-<a class="jxr_linenumber" name="L38" href="#L38">38</a>  <strong class="jxr_keyword">import</strong> org.junit.jupiter.api.Test;
-<a class="jxr_linenumber" name="L39" href="#L39">39</a>  
+<a class="jxr_linenumber" name="L37" href="#L37">37</a>  <strong class="jxr_keyword">import</strong> org.apache.rat.utils.DefaultLog;
+<a class="jxr_linenumber" name="L38" href="#L38">38</a>  <strong class="jxr_keyword">import</strong> org.junit.jupiter.api.BeforeEach;
+<a class="jxr_linenumber" name="L39" href="#L39">39</a>  <strong class="jxr_keyword">import</strong> org.junit.jupiter.api.Test;
 <a class="jxr_linenumber" name="L40" href="#L40">40</a>  
-<a class="jxr_linenumber" name="L41" href="#L41">41</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a name="AnalyserFactoryTest" href="../../../../org/apache/rat/analysis/AnalyserFactoryTest.html#AnalyserFactoryTest">AnalyserFactoryTest</a> {
-<a class="jxr_linenumber" name="L42" href="#L42">42</a>  
-<a class="jxr_linenumber" name="L43" href="#L43">43</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> ILicense MATCHES_NOTHING_MATCHER = mock(ILicense.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="L44" href="#L44">44</a>  
-<a class="jxr_linenumber" name="L45" href="#L45">45</a>      <strong class="jxr_keyword">static</strong> {
-<a class="jxr_linenumber" name="L46" href="#L46">46</a>              when(MATCHES_NOTHING_MATCHER.matches(any())).thenReturn(State.f);
-<a class="jxr_linenumber" name="L47" href="#L47">47</a>              when(MATCHES_NOTHING_MATCHER.currentState()).thenReturn(State.f);
-<a class="jxr_linenumber" name="L48" href="#L48">48</a>              when(MATCHES_NOTHING_MATCHER.finalizeState()).thenReturn(State.f);
-<a class="jxr_linenumber" name="L49" href="#L49">49</a>      }
-<a class="jxr_linenumber" name="L50" href="#L50">50</a>  
-<a class="jxr_linenumber" name="L51" href="#L51">51</a>      <strong class="jxr_keyword">private</strong> StringWriter out;
-<a class="jxr_linenumber" name="L52" href="#L52">52</a>      <strong class="jxr_keyword">private</strong> SimpleXmlClaimReporter reporter;
-<a class="jxr_linenumber" name="L53" href="#L53">53</a>      <strong class="jxr_keyword">private</strong> IDocumentAnalyser analyser;
-<a class="jxr_linenumber" name="L54" href="#L54">54</a>  
-<a class="jxr_linenumber" name="L55" href="#L55">55</a>      @BeforeEach
-<a class="jxr_linenumber" name="L56" href="#L56">56</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setUp() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="L57" href="#L57">57</a>          out = <strong class="jxr_keyword">new</strong> StringWriter();
-<a class="jxr_linenumber" name="L58" href="#L58">58</a>          <strong class="jxr_keyword">final</strong> XmlWriter writer = <strong class="jxr_keyword">new</strong> XmlWriter(out);
-<a class="jxr_linenumber" name="L59" href="#L59">59</a>          reporter = <strong class="jxr_keyword">new</strong> SimpleXmlClaimReporter(writer);
-<a class="jxr_linenumber" name="L60" href="#L60">60</a>          analyser = DefaultAnalyserFactory.createDefaultAnalyser(Arrays.asList(MATCHES_NOTHING_MATCHER));
-<a class="jxr_linenumber" name="L61" href="#L61">61</a>      }
-<a class="jxr_linenumber" name="L62" href="#L62">62</a>  
-<a class="jxr_linenumber" name="L63" href="#L63">63</a>      @Test
-<a class="jxr_linenumber" name="L64" href="#L64">64</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> standardTypeAnalyser() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="L65" href="#L65">65</a>          <strong class="jxr_keyword">final</strong> MonolithicFileDocument document = <strong class="jxr_keyword">new</strong> MonolithicFileDocument(
-<a class="jxr_linenumber" name="L66" href="#L66">66</a>                  Resources.getResourceFile(<span class="jxr_string">"/elements/Text.txt"</span>));
-<a class="jxr_linenumber" name="L67" href="#L67">67</a>          analyser.analyse(document);
-<a class="jxr_linenumber" name="L68" href="#L68">68</a>          reporter.report(document);
-<a class="jxr_linenumber" name="L69" href="#L69">69</a>          assertEquals( <em class="jxr_comment">//</em>
-<a class="jxr_linenumber" name="L70" href="#L70">70</a>                  <span class="jxr_string">"&lt;resource name='src/test/resources/elements/Text.txt'&gt;&lt;header-sample&gt;/*\n"</span>
-<a class="jxr_linenumber" name="L71" href="#L71">71</a>                          + <span class="jxr_string">" * Licensed to the Apache Software Foundation (ASF) under one\n"</span>
-<a class="jxr_linenumber" name="L72" href="#L72">72</a>                          + <span class="jxr_string">" * or more contributor license agreements.  See the NOTICE file\n"</span>
-<a class="jxr_linenumber" name="L73" href="#L73">73</a>                          + <span class="jxr_string">" * distributed with this work for additional information\n"</span>
-<a class="jxr_linenumber" name="L74" href="#L74">74</a>                          + <span class="jxr_string">" * regarding copyright ownership.  The ASF licenses this file\n"</span>
-<a class="jxr_linenumber" name="L75" href="#L75">75</a>                          + <span class="jxr_string">" * to you under the Apache License, Version 2.0 (the \&quot;License\&quot;);\n"</span>
-<a class="jxr_linenumber" name="L76" href="#L76">76</a>                          + <span class="jxr_string">" * you may not use this file except in compliance with the License.\n"</span>
-<a class="jxr_linenumber" name="L77" href="#L77">77</a>                          + <span class="jxr_string">" * You may obtain a copy of the License at\n"</span> + <span class="jxr_string">" *\n"</span>
-<a class="jxr_linenumber" name="L78" href="#L78">78</a>                          + <span class="jxr_string">" *    http://www.apache.org/licenses/LICENSE-2.0\n"</span> + <span class="jxr_string">" *\n"</span>
-<a class="jxr_linenumber" name="L79" href="#L79">79</a>                          + <span class="jxr_string">" * Unless required by applicable law or agreed to in writing,\n"</span>
-<a class="jxr_linenumber" name="L80" href="#L80">80</a>                          + <span class="jxr_string">" * software distributed under the License is distributed on an\n"</span>
-<a class="jxr_linenumber" name="L81" href="#L81">81</a>                          + <span class="jxr_string">" * \&quot;AS IS\&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n"</span>
-<a class="jxr_linenumber" name="L82" href="#L82">82</a>                          + <span class="jxr_string">" * KIND, either express or implied.  See the License for the\n"</span>
-<a class="jxr_linenumber" name="L83" href="#L83">83</a>                          + <span class="jxr_string">" * specific language governing permissions and limitations\n"</span> + <span class="jxr_string">" * under the License.    \n"</span>
-<a class="jxr_linenumber" name="L84" href="#L84">84</a>                          + <span class="jxr_string">" */\n"</span> + <span class="jxr_string">"\n"</span> + <span class="jxr_string">"            \n"</span>
-<a class="jxr_linenumber" name="L85" href="#L85">85</a>                          + <span class="jxr_string">"&lt;/header-sample&gt;&lt;header-type name='?????'/&gt;&lt;license-family name='Unknown license'/&gt;&lt;type name='standard'/&gt;"</span>,
-<a class="jxr_linenumber" name="L86" href="#L86">86</a>                  out.toString(), <span class="jxr_string">"Open standard element"</span>);
-<a class="jxr_linenumber" name="L87" href="#L87">87</a>      }
-<a class="jxr_linenumber" name="L88" href="#L88">88</a>  
-<a class="jxr_linenumber" name="L89" href="#L89">89</a>      @Test
-<a class="jxr_linenumber" name="L90" href="#L90">90</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> noteTypeAnalyser() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="L91" href="#L91">91</a>          <strong class="jxr_keyword">final</strong> MonolithicFileDocument document = <strong class="jxr_keyword">new</strong> MonolithicFileDocument(
-<a class="jxr_linenumber" name="L92" href="#L92">92</a>                  Resources.getResourceFile(<span class="jxr_string">"/elements/LICENSE"</span>));
-<a class="jxr_linenumber" name="L93" href="#L93">93</a>          analyser.analyse(document);
-<a class="jxr_linenumber" name="L94" href="#L94">94</a>          reporter.report(document);
-<a class="jxr_linenumber" name="L95" href="#L95">95</a>          assertEquals(<span class="jxr_string">"&lt;resource name='src/test/resources/elements/LICENSE'&gt;&lt;type name='notice'/&gt;"</span>,
-<a class="jxr_linenumber" name="L96" href="#L96">96</a>                  out.toString(), <span class="jxr_string">"Open note element"</span>);
-<a class="jxr_linenumber" name="L97" href="#L97">97</a>      }
-<a class="jxr_linenumber" name="L98" href="#L98">98</a>  
-<a class="jxr_linenumber" name="L99" href="#L99">99</a>      @Test
-<a class="jxr_linenumber" name="L100" href="#L100">100</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> binaryTypeAnalyser() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="L101" href="#L101">101</a>         <strong class="jxr_keyword">final</strong> MonolithicFileDocument document = <strong class="jxr_keyword">new</strong> MonolithicFileDocument(
-<a class="jxr_linenumber" name="L102" href="#L102">102</a>                 Resources.getResourceFile(<span class="jxr_string">"/elements/Image.png"</span>));
-<a class="jxr_linenumber" name="L103" href="#L103">103</a>         analyser.analyse(document);
-<a class="jxr_linenumber" name="L104" href="#L104">104</a>         reporter.report(document);
-<a class="jxr_linenumber" name="L105" href="#L105">105</a>         assertEquals(
-<a class="jxr_linenumber" name="L106" href="#L106">106</a>                 <span class="jxr_string">"&lt;resource name='src/test/resources/elements/Image.png'&gt;&lt;type name='binary'/&gt;"</span>, 
-<a class="jxr_linenumber" name="L107" href="#L107">107</a>                 out.toString(), <span class="jxr_string">"Open binary element"</span>);
-<a class="jxr_linenumber" name="L108" href="#L108">108</a>     }
-<a class="jxr_linenumber" name="L109" href="#L109">109</a> 
-<a class="jxr_linenumber" name="L110" href="#L110">110</a>     @Test
-<a class="jxr_linenumber" name="L111" href="#L111">111</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> archiveTypeAnalyser() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="L112" href="#L112">112</a>         <strong class="jxr_keyword">final</strong> MonolithicFileDocument document = <strong class="jxr_keyword">new</strong> MonolithicFileDocument(
-<a class="jxr_linenumber" name="L113" href="#L113">113</a>                 Resources.getResourceFile(<span class="jxr_string">"/elements/dummy.jar"</span>));
-<a class="jxr_linenumber" name="L114" href="#L114">114</a>         analyser.analyse(document);
-<a class="jxr_linenumber" name="L115" href="#L115">115</a>         reporter.report(document);
-<a class="jxr_linenumber" name="L116" href="#L116">116</a>         assertEquals(
-<a class="jxr_linenumber" name="L117" href="#L117">117</a>                 <span class="jxr_string">"&lt;resource name='src/test/resources/elements/dummy.jar'&gt;&lt;type name='archive'/&gt;"</span>, out.toString(), <span class="jxr_string">"Open archive element"</span>);
-<a class="jxr_linenumber" name="L118" href="#L118">118</a>     }
-<a class="jxr_linenumber" name="L119" href="#L119">119</a> 
-<a class="jxr_linenumber" name="L120" href="#L120">120</a>     @Test
-<a class="jxr_linenumber" name="L121" href="#L121">121</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> archiveTypeAnalyserIntelliJ() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="L122" href="#L122">122</a>         <strong class="jxr_keyword">final</strong> MonolithicFileDocument document = <strong class="jxr_keyword">new</strong> MonolithicFileDocument(
-<a class="jxr_linenumber" name="L123" href="#L123">123</a>                 Resources.getResourceFile(<span class="jxr_string">"/elements/dummy.jar"</span>));
-<a class="jxr_linenumber" name="L124" href="#L124">124</a>         analyser.analyse(document);
-<a class="jxr_linenumber" name="L125" href="#L125">125</a>         reporter.report(document);
-<a class="jxr_linenumber" name="L126" href="#L126">126</a>         assertEquals(
-<a class="jxr_linenumber" name="L127" href="#L127">127</a>                 <span class="jxr_string">"&lt;resource name='src/test/resources/elements/dummy.jar'&gt;&lt;type name='archive'/&gt;"</span>, out.toString(), <span class="jxr_string">"Open archive element"</span>);
-<a class="jxr_linenumber" name="L128" href="#L128">128</a>     }
-<a class="jxr_linenumber" name="L129" href="#L129">129</a> }
+<a class="jxr_linenumber" name="L41" href="#L41">41</a>  
+<a class="jxr_linenumber" name="L42" href="#L42">42</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a name="AnalyserFactoryTest" href="../../../../org/apache/rat/analysis/AnalyserFactoryTest.html#AnalyserFactoryTest">AnalyserFactoryTest</a> {
+<a class="jxr_linenumber" name="L43" href="#L43">43</a>  
+<a class="jxr_linenumber" name="L44" href="#L44">44</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> ILicense MATCHES_NOTHING_MATCHER = mock(ILicense.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="L45" href="#L45">45</a>  
+<a class="jxr_linenumber" name="L46" href="#L46">46</a>      <strong class="jxr_keyword">static</strong> {
+<a class="jxr_linenumber" name="L47" href="#L47">47</a>              when(MATCHES_NOTHING_MATCHER.matches(any())).thenReturn(State.f);
+<a class="jxr_linenumber" name="L48" href="#L48">48</a>              when(MATCHES_NOTHING_MATCHER.currentState()).thenReturn(State.f);
+<a class="jxr_linenumber" name="L49" href="#L49">49</a>              when(MATCHES_NOTHING_MATCHER.finalizeState()).thenReturn(State.f);
+<a class="jxr_linenumber" name="L50" href="#L50">50</a>      }
+<a class="jxr_linenumber" name="L51" href="#L51">51</a>  
+<a class="jxr_linenumber" name="L52" href="#L52">52</a>      <strong class="jxr_keyword">private</strong> StringWriter out;
+<a class="jxr_linenumber" name="L53" href="#L53">53</a>      <strong class="jxr_keyword">private</strong> SimpleXmlClaimReporter reporter;
+<a class="jxr_linenumber" name="L54" href="#L54">54</a>      <strong class="jxr_keyword">private</strong> IDocumentAnalyser analyser;
+<a class="jxr_linenumber" name="L55" href="#L55">55</a>  
+<a class="jxr_linenumber" name="L56" href="#L56">56</a>      @BeforeEach
+<a class="jxr_linenumber" name="L57" href="#L57">57</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setUp() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="L58" href="#L58">58</a>          out = <strong class="jxr_keyword">new</strong> StringWriter();
+<a class="jxr_linenumber" name="L59" href="#L59">59</a>          <strong class="jxr_keyword">final</strong> XmlWriter writer = <strong class="jxr_keyword">new</strong> XmlWriter(out);
+<a class="jxr_linenumber" name="L60" href="#L60">60</a>          reporter = <strong class="jxr_keyword">new</strong> SimpleXmlClaimReporter(writer);
+<a class="jxr_linenumber" name="L61" href="#L61">61</a>          analyser = DefaultAnalyserFactory.createDefaultAnalyser(DefaultLog.INSTANCE, Arrays.asList(MATCHES_NOTHING_MATCHER));
+<a class="jxr_linenumber" name="L62" href="#L62">62</a>      }
+<a class="jxr_linenumber" name="L63" href="#L63">63</a>  
+<a class="jxr_linenumber" name="L64" href="#L64">64</a>      @Test
+<a class="jxr_linenumber" name="L65" href="#L65">65</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> standardTypeAnalyser() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="L66" href="#L66">66</a>          <strong class="jxr_keyword">final</strong> MonolithicFileDocument document = <strong class="jxr_keyword">new</strong> MonolithicFileDocument(
+<a class="jxr_linenumber" name="L67" href="#L67">67</a>                  Resources.getResourceFile(<span class="jxr_string">"/elements/Text.txt"</span>));
+<a class="jxr_linenumber" name="L68" href="#L68">68</a>          analyser.analyse(document);
+<a class="jxr_linenumber" name="L69" href="#L69">69</a>          reporter.report(document);
+<a class="jxr_linenumber" name="L70" href="#L70">70</a>          assertEquals( <em class="jxr_comment">//</em>
+<a class="jxr_linenumber" name="L71" href="#L71">71</a>                  <span class="jxr_string">"&lt;resource name='src/test/resources/elements/Text.txt'&gt;&lt;header-sample&gt;/*\n"</span>
+<a class="jxr_linenumber" name="L72" href="#L72">72</a>                          + <span class="jxr_string">" * Licensed to the Apache Software Foundation (ASF) under one\n"</span>
+<a class="jxr_linenumber" name="L73" href="#L73">73</a>                          + <span class="jxr_string">" * or more contributor license agreements.  See the NOTICE file\n"</span>
+<a class="jxr_linenumber" name="L74" href="#L74">74</a>                          + <span class="jxr_string">" * distributed with this work for additional information\n"</span>
+<a class="jxr_linenumber" name="L75" href="#L75">75</a>                          + <span class="jxr_string">" * regarding copyright ownership.  The ASF licenses this file\n"</span>
+<a class="jxr_linenumber" name="L76" href="#L76">76</a>                          + <span class="jxr_string">" * to you under the Apache License, Version 2.0 (the \&quot;License\&quot;);\n"</span>
+<a class="jxr_linenumber" name="L77" href="#L77">77</a>                          + <span class="jxr_string">" * you may not use this file except in compliance with the License.\n"</span>
+<a class="jxr_linenumber" name="L78" href="#L78">78</a>                          + <span class="jxr_string">" * You may obtain a copy of the License at\n"</span> + <span class="jxr_string">" *\n"</span>
+<a class="jxr_linenumber" name="L79" href="#L79">79</a>                          + <span class="jxr_string">" *    http://www.apache.org/licenses/LICENSE-2.0\n"</span> + <span class="jxr_string">" *\n"</span>
+<a class="jxr_linenumber" name="L80" href="#L80">80</a>                          + <span class="jxr_string">" * Unless required by applicable law or agreed to in writing,\n"</span>
+<a class="jxr_linenumber" name="L81" href="#L81">81</a>                          + <span class="jxr_string">" * software distributed under the License is distributed on an\n"</span>
+<a class="jxr_linenumber" name="L82" href="#L82">82</a>                          + <span class="jxr_string">" * \&quot;AS IS\&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n"</span>
+<a class="jxr_linenumber" name="L83" href="#L83">83</a>                          + <span class="jxr_string">" * KIND, either express or implied.  See the License for the\n"</span>
+<a class="jxr_linenumber" name="L84" href="#L84">84</a>                          + <span class="jxr_string">" * specific language governing permissions and limitations\n"</span> + <span class="jxr_string">" * under the License.    \n"</span>
+<a class="jxr_linenumber" name="L85" href="#L85">85</a>                          + <span class="jxr_string">" */\n"</span> + <span class="jxr_string">"\n"</span> + <span class="jxr_string">"            \n"</span>
+<a class="jxr_linenumber" name="L86" href="#L86">86</a>                          + <span class="jxr_string">"&lt;/header-sample&gt;&lt;header-type name='?????'/&gt;&lt;license-family name='Unknown license'/&gt;&lt;type name='standard'/&gt;"</span>,
+<a class="jxr_linenumber" name="L87" href="#L87">87</a>                  out.toString(), <span class="jxr_string">"Open standard element"</span>);
+<a class="jxr_linenumber" name="L88" href="#L88">88</a>      }
+<a class="jxr_linenumber" name="L89" href="#L89">89</a>  
+<a class="jxr_linenumber" name="L90" href="#L90">90</a>      @Test
+<a class="jxr_linenumber" name="L91" href="#L91">91</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> noteTypeAnalyser() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="L92" href="#L92">92</a>          <strong class="jxr_keyword">final</strong> MonolithicFileDocument document = <strong class="jxr_keyword">new</strong> MonolithicFileDocument(
+<a class="jxr_linenumber" name="L93" href="#L93">93</a>                  Resources.getResourceFile(<span class="jxr_string">"/elements/LICENSE"</span>));
+<a class="jxr_linenumber" name="L94" href="#L94">94</a>          analyser.analyse(document);
+<a class="jxr_linenumber" name="L95" href="#L95">95</a>          reporter.report(document);
+<a class="jxr_linenumber" name="L96" href="#L96">96</a>          assertEquals(<span class="jxr_string">"&lt;resource name='src/test/resources/elements/LICENSE'&gt;&lt;type name='notice'/&gt;"</span>,
+<a class="jxr_linenumber" name="L97" href="#L97">97</a>                  out.toString(), <span class="jxr_string">"Open note element"</span>);
+<a class="jxr_linenumber" name="L98" href="#L98">98</a>      }
+<a class="jxr_linenumber" name="L99" href="#L99">99</a>  
+<a class="jxr_linenumber" name="L100" href="#L100">100</a>     @Test
+<a class="jxr_linenumber" name="L101" href="#L101">101</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> binaryTypeAnalyser() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="L102" href="#L102">102</a>         <strong class="jxr_keyword">final</strong> MonolithicFileDocument document = <strong class="jxr_keyword">new</strong> MonolithicFileDocument(
+<a class="jxr_linenumber" name="L103" href="#L103">103</a>                 Resources.getResourceFile(<span class="jxr_string">"/elements/Image.png"</span>));
+<a class="jxr_linenumber" name="L104" href="#L104">104</a>         analyser.analyse(document);
+<a class="jxr_linenumber" name="L105" href="#L105">105</a>         reporter.report(document);
+<a class="jxr_linenumber" name="L106" href="#L106">106</a>         assertEquals(
+<a class="jxr_linenumber" name="L107" href="#L107">107</a>                 <span class="jxr_string">"&lt;resource name='src/test/resources/elements/Image.png'&gt;&lt;type name='binary'/&gt;"</span>, 
+<a class="jxr_linenumber" name="L108" href="#L108">108</a>                 out.toString(), <span class="jxr_string">"Open binary element"</span>);
+<a class="jxr_linenumber" name="L109" href="#L109">109</a>     }
+<a class="jxr_linenumber" name="L110" href="#L110">110</a> 
+<a class="jxr_linenumber" name="L111" href="#L111">111</a>     @Test
+<a class="jxr_linenumber" name="L112" href="#L112">112</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> archiveTypeAnalyser() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="L113" href="#L113">113</a>         <strong class="jxr_keyword">final</strong> MonolithicFileDocument document = <strong class="jxr_keyword">new</strong> MonolithicFileDocument(
+<a class="jxr_linenumber" name="L114" href="#L114">114</a>                 Resources.getResourceFile(<span class="jxr_string">"/elements/dummy.jar"</span>));
+<a class="jxr_linenumber" name="L115" href="#L115">115</a>         analyser.analyse(document);
+<a class="jxr_linenumber" name="L116" href="#L116">116</a>         reporter.report(document);
+<a class="jxr_linenumber" name="L117" href="#L117">117</a>         assertEquals(
+<a class="jxr_linenumber" name="L118" href="#L118">118</a>                 <span class="jxr_string">"&lt;resource name='src/test/resources/elements/dummy.jar'&gt;&lt;type name='archive'/&gt;"</span>, out.toString(), <span class="jxr_string">"Open archive element"</span>);
+<a class="jxr_linenumber" name="L119" href="#L119">119</a>     }
+<a class="jxr_linenumber" name="L120" href="#L120">120</a> 
+<a class="jxr_linenumber" name="L121" href="#L121">121</a>     @Test
+<a class="jxr_linenumber" name="L122" href="#L122">122</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> archiveTypeAnalyserIntelliJ() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="L123" href="#L123">123</a>         <strong class="jxr_keyword">final</strong> MonolithicFileDocument document = <strong class="jxr_keyword">new</strong> MonolithicFileDocument(
+<a class="jxr_linenumber" name="L124" href="#L124">124</a>                 Resources.getResourceFile(<span class="jxr_string">"/elements/dummy.jar"</span>));
+<a class="jxr_linenumber" name="L125" href="#L125">125</a>         analyser.analyse(document);
+<a class="jxr_linenumber" name="L126" href="#L126">126</a>         reporter.report(document);
+<a class="jxr_linenumber" name="L127" href="#L127">127</a>         assertEquals(
+<a class="jxr_linenumber" name="L128" href="#L128">128</a>                 <span class="jxr_string">"&lt;resource name='src/test/resources/elements/dummy.jar'&gt;&lt;type name='archive'/&gt;"</span>, out.toString(), <span class="jxr_string">"Open archive element"</span>);
+<a class="jxr_linenumber" name="L129" href="#L129">129</a>     }
+<a class="jxr_linenumber" name="L130" href="#L130">130</a> }
 </pre>
 <hr/>
 <div id="footer">Copyright &#169; 2006&#x2013;2024 <a href="https://www.apache.org">Apache Software Foundation</a>. All rights reserved.</div>
diff --git a/rat0161/apache-rat-core/xref-test/org/apache/rat/analysis/matchers/SPDXMatcherTest.html b/rat0161/apache-rat-core/xref-test/org/apache/rat/analysis/matchers/SPDXMatcherTest.html
index d1b40891..c65d3a49 100644
--- a/rat0161/apache-rat-core/xref-test/org/apache/rat/analysis/matchers/SPDXMatcherTest.html
+++ b/rat0161/apache-rat-core/xref-test/org/apache/rat/analysis/matchers/SPDXMatcherTest.html
@@ -80,7 +80,18 @@
 <a class="jxr_linenumber" name="L72" href="#L72">72</a>          target.reset();
 <a class="jxr_linenumber" name="L73" href="#L73">73</a>          assertEquals(State.i, target.currentState());
 <a class="jxr_linenumber" name="L74" href="#L74">74</a>      }
-<a class="jxr_linenumber" name="L75" href="#L75">75</a>  }
+<a class="jxr_linenumber" name="L75" href="#L75">75</a>      
+<a class="jxr_linenumber" name="L76" href="#L76">76</a>      @Test
+<a class="jxr_linenumber" name="L77" href="#L77">77</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testResetClearsLastMatch() {
+<a class="jxr_linenumber" name="L78" href="#L78">78</a>          
+<a class="jxr_linenumber" name="L79" href="#L79">79</a>          assertEquals(State.i, target.currentState());
+<a class="jxr_linenumber" name="L80" href="#L80">80</a>          assertEquals(State.t, target.matches(<span class="jxr_string">"SPDX-License-Identifier: hello"</span>));
+<a class="jxr_linenumber" name="L81" href="#L81">81</a>          assertEquals(State.t, target.currentState());
+<a class="jxr_linenumber" name="L82" href="#L82">82</a>          target.reset();
+<a class="jxr_linenumber" name="L83" href="#L83">83</a>          assertEquals(State.i, target.currentState());
+<a class="jxr_linenumber" name="L84" href="#L84">84</a>          assertEquals(State.i, target.matches(<span class="jxr_string">"Something weird"</span>));;
+<a class="jxr_linenumber" name="L85" href="#L85">85</a>      }
+<a class="jxr_linenumber" name="L86" href="#L86">86</a>  }
 </pre>
 <hr/>
 <div id="footer">Copyright &#169; 2006&#x2013;2024 <a href="https://www.apache.org">Apache Software Foundation</a>. All rights reserved.</div>
diff --git a/rat0161/apache-rat-core/xref-test/org/apache/rat/annotation/TestLicenseAppender.html b/rat0161/apache-rat-core/xref-test/org/apache/rat/annotation/TestLicenseAppender.html
index 1e524160..9e50032e 100644
--- a/rat0161/apache-rat-core/xref-test/org/apache/rat/annotation/TestLicenseAppender.html
+++ b/rat0161/apache-rat-core/xref-test/org/apache/rat/annotation/TestLicenseAppender.html
@@ -38,650 +38,651 @@
 <a class="jxr_linenumber" name="L30" href="#L30">30</a>  
 <a class="jxr_linenumber" name="L31" href="#L31">31</a>  <strong class="jxr_keyword">import</strong> org.apache.commons.io.FileUtils;
 <a class="jxr_linenumber" name="L32" href="#L32">32</a>  <strong class="jxr_keyword">import</strong> org.apache.rat.test.utils.Resources;
-<a class="jxr_linenumber" name="L33" href="#L33">33</a>  <strong class="jxr_keyword">import</strong> org.junit.jupiter.api.Test;
-<a class="jxr_linenumber" name="L34" href="#L34">34</a>  <strong class="jxr_keyword">import</strong> org.junit.jupiter.api.io.TempDir;
-<a class="jxr_linenumber" name="L35" href="#L35">35</a>  
-<a class="jxr_linenumber" name="L36" href="#L36">36</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a name="TestLicenseAppender" href="../../../../org/apache/rat/annotation/TestLicenseAppender.html#TestLicenseAppender">TestLicenseAppender</a> {
-<a class="jxr_linenumber" name="L37" href="#L37">37</a>      
-<a class="jxr_linenumber" name="L38" href="#L38">38</a>  	@TempDir
-<a class="jxr_linenumber" name="L39" href="#L39">39</a>      <strong class="jxr_keyword">private</strong> File baseTempFolder;
-<a class="jxr_linenumber" name="L40" href="#L40">40</a>    
-<a class="jxr_linenumber" name="L41" href="#L41">41</a>  
-<a class="jxr_linenumber" name="L42" href="#L42">42</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String FIRST_LICENSE_LINE = <span class="jxr_string">" Licensed to the Apache Software Foundation (ASF) under one"</span>;
-<a class="jxr_linenumber" name="L43" href="#L43">43</a>  
-<a class="jxr_linenumber" name="L44" href="#L44">44</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">interface</strong> FileCreator {
-<a class="jxr_linenumber" name="L45" href="#L45">45</a>          <strong class="jxr_keyword">void</strong> createFile(Writer w) <strong class="jxr_keyword">throws</strong> IOException;
-<a class="jxr_linenumber" name="L46" href="#L46">46</a>      }
-<a class="jxr_linenumber" name="L47" href="#L47">47</a>  
-<a class="jxr_linenumber" name="L48" href="#L48">48</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">interface</strong> NewFileReader {
-<a class="jxr_linenumber" name="L49" href="#L49">49</a>          <strong class="jxr_keyword">void</strong> readFile(BufferedReader r) <strong class="jxr_keyword">throws</strong> IOException;
-<a class="jxr_linenumber" name="L50" href="#L50">50</a>      }
-<a class="jxr_linenumber" name="L51" href="#L51">51</a>  
-<a class="jxr_linenumber" name="L52" href="#L52">52</a>      <strong class="jxr_keyword">private</strong> String getTemporaryFileWithName(String fileName) <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="L53" href="#L53">53</a>          <strong class="jxr_keyword">if</strong> (fileName != <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="L54" href="#L54">54</a>              <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> File(baseTempFolder,fileName).getAbsolutePath();
-<a class="jxr_linenumber" name="L55" href="#L55">55</a>          }
-<a class="jxr_linenumber" name="L56" href="#L56">56</a>          <strong class="jxr_keyword">return</strong> File.createTempFile(<span class="jxr_string">"tla"</span>, <strong class="jxr_keyword">null</strong>, baseTempFolder).getAbsolutePath();
-<a class="jxr_linenumber" name="L57" href="#L57">57</a>      }
-<a class="jxr_linenumber" name="L58" href="#L58">58</a>  
-<a class="jxr_linenumber" name="L59" href="#L59">59</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> createTestFile(String fileName,
-<a class="jxr_linenumber" name="L60" href="#L60">60</a>                                         FileCreator creator)
-<a class="jxr_linenumber" name="L61" href="#L61">61</a>              <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="L62" href="#L62">62</a>          <strong class="jxr_keyword">try</strong> (FileWriter w = <strong class="jxr_keyword">new</strong> FileWriter(fileName)) {
-<a class="jxr_linenumber" name="L63" href="#L63">63</a>              creator.createFile(w);
-<a class="jxr_linenumber" name="L64" href="#L64">64</a>          }
-<a class="jxr_linenumber" name="L65" href="#L65">65</a>      }
-<a class="jxr_linenumber" name="L66" href="#L66">66</a>  
-<a class="jxr_linenumber" name="L67" href="#L67">67</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> commonTestTemplate(String relativeName,
-<a class="jxr_linenumber" name="L68" href="#L68">68</a>                                             FileCreator creator,
-<a class="jxr_linenumber" name="L69" href="#L69">69</a>                                             NewFileReader reader)
-<a class="jxr_linenumber" name="L70" href="#L70">70</a>              <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="L71" href="#L71">71</a>          String name = getTemporaryFileWithName(relativeName);
-<a class="jxr_linenumber" name="L72" href="#L72">72</a>    
-<a class="jxr_linenumber" name="L73" href="#L73">73</a>              createTestFile(name, creator);
-<a class="jxr_linenumber" name="L74" href="#L74">74</a>  
-<a class="jxr_linenumber" name="L75" href="#L75">75</a>              ApacheV2LicenseAppender appender =
-<a class="jxr_linenumber" name="L76" href="#L76">76</a>                      <strong class="jxr_keyword">new</strong> ApacheV2LicenseAppender();
-<a class="jxr_linenumber" name="L77" href="#L77">77</a>              appender.append(<strong class="jxr_keyword">new</strong> File(name));
-<a class="jxr_linenumber" name="L78" href="#L78">78</a>  
-<a class="jxr_linenumber" name="L79" href="#L79">79</a>              <strong class="jxr_keyword">try</strong> (BufferedReader r = <strong class="jxr_keyword">new</strong> BufferedReader(<strong class="jxr_keyword">new</strong> FileReader(name + <span class="jxr_string">".new"</span>))){
-<a class="jxr_linenumber" name="L80" href="#L80">80</a>                  reader.readFile(r);
-<a class="jxr_linenumber" name="L81" href="#L81">81</a>              }
-<a class="jxr_linenumber" name="L82" href="#L82">82</a>            FileUtils.delete( <strong class="jxr_keyword">new</strong> File(name+<span class="jxr_string">".new"</span>));
-<a class="jxr_linenumber" name="L83" href="#L83">83</a>            FileUtils.delete( <strong class="jxr_keyword">new</strong> File(name));
-<a class="jxr_linenumber" name="L84" href="#L84">84</a>      }
-<a class="jxr_linenumber" name="L85" href="#L85">85</a>  
-<a class="jxr_linenumber" name="L86" href="#L86">86</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> NewFileReader checkLines(<strong class="jxr_keyword">final</strong> String ... lines) {
-<a class="jxr_linenumber" name="L87" href="#L87">87</a>          <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> NewFileReader() {
-<a class="jxr_linenumber" name="L88" href="#L88">88</a>              <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> readFile(BufferedReader r) <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="L89" href="#L89">89</a>                  <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i=0; i&lt;lines.length; i++) {
-<a class="jxr_linenumber" name="L90" href="#L90">90</a>                      String line = r.readLine();
-<a class="jxr_linenumber" name="L91" href="#L91">91</a>                      assertEquals(lines[i], line, String.format(<span class="jxr_string">"Line %s is incorrect"</span>,i));
-<a class="jxr_linenumber" name="L92" href="#L92">92</a>                  }
-<a class="jxr_linenumber" name="L93" href="#L93">93</a>              }
-<a class="jxr_linenumber" name="L94" href="#L94">94</a>          };
-<a class="jxr_linenumber" name="L95" href="#L95">95</a>      }
-<a class="jxr_linenumber" name="L96" href="#L96">96</a>  
-<a class="jxr_linenumber" name="L97" href="#L97">97</a>      @Test
-<a class="jxr_linenumber" name="L98" href="#L98">98</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> addLicenseToUnknownFile() <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="L99" href="#L99">99</a>          String filename = getTemporaryFileWithName(<strong class="jxr_keyword">null</strong>);
-<a class="jxr_linenumber" name="L100" href="#L100">100</a>         createTestFile(filename, <strong class="jxr_keyword">new</strong> FileCreator() {
-<a class="jxr_linenumber" name="L101" href="#L101">101</a>             <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> createFile(Writer writer)
-<a class="jxr_linenumber" name="L102" href="#L102">102</a>                     <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="L103" href="#L103">103</a>                 writer.write(<span class="jxr_string">"Unknown file type\n"</span>);
-<a class="jxr_linenumber" name="L104" href="#L104">104</a>             }
-<a class="jxr_linenumber" name="L105" href="#L105">105</a>         });
-<a class="jxr_linenumber" name="L106" href="#L106">106</a> 
-<a class="jxr_linenumber" name="L107" href="#L107">107</a>         File file = <strong class="jxr_keyword">new</strong> File(filename);
-<a class="jxr_linenumber" name="L108" href="#L108">108</a>         file.deleteOnExit();
-<a class="jxr_linenumber" name="L109" href="#L109">109</a>         ApacheV2LicenseAppender appender =
-<a class="jxr_linenumber" name="L110" href="#L110">110</a>                 <strong class="jxr_keyword">new</strong> ApacheV2LicenseAppender();
-<a class="jxr_linenumber" name="L111" href="#L111">111</a>         appender.append(file);
-<a class="jxr_linenumber" name="L112" href="#L112">112</a> 
-<a class="jxr_linenumber" name="L113" href="#L113">113</a>         File newFile = <strong class="jxr_keyword">new</strong> File(filename + <span class="jxr_string">".new"</span>);
-<a class="jxr_linenumber" name="L114" href="#L114">114</a>         newFile.deleteOnExit();
-<a class="jxr_linenumber" name="L115" href="#L115">115</a>         assertFalse(newFile.exists(), <span class="jxr_string">"No new file should have been written"</span>);
-<a class="jxr_linenumber" name="L116" href="#L116">116</a>     }
-<a class="jxr_linenumber" name="L117" href="#L117">117</a> 
-<a class="jxr_linenumber" name="L118" href="#L118">118</a>     @Test
-<a class="jxr_linenumber" name="L119" href="#L119">119</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> addLicenseToJava() <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="L120" href="#L120">120</a>         String filename = <span class="jxr_string">"tmp.java"</span>;
-<a class="jxr_linenumber" name="L121" href="#L121">121</a>         <strong class="jxr_keyword">final</strong> String firstLine = <span class="jxr_string">"package foo;"</span>;
-<a class="jxr_linenumber" name="L122" href="#L122">122</a>         <strong class="jxr_keyword">final</strong> String secondLine = <span class="jxr_string">""</span>;
-<a class="jxr_linenumber" name="L123" href="#L123">123</a>         <strong class="jxr_keyword">final</strong> String thirdLine = <span class="jxr_string">"/*"</span>;
-<a class="jxr_linenumber" name="L124" href="#L124">124</a>         commonTestTemplate(filename, <strong class="jxr_keyword">new</strong> FileCreator() {
-<a class="jxr_linenumber" name="L125" href="#L125">125</a>                     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> createFile(Writer writer)
-<a class="jxr_linenumber" name="L126" href="#L126">126</a>                             <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="L127" href="#L127">127</a>                         writer.write(firstLine + <span class="jxr_string">"\n"</span>);
-<a class="jxr_linenumber" name="L128" href="#L128">128</a>                         writer.write(<span class="jxr_string">"\n"</span>);
-<a class="jxr_linenumber" name="L129" href="#L129">129</a>                         writer.write(<span class="jxr_string">"public class test {\n"</span>);
-<a class="jxr_linenumber" name="L130" href="#L130">130</a>                         writer.write(<span class="jxr_string">"}\n"</span>);
-<a class="jxr_linenumber" name="L131" href="#L131">131</a>                     }
-<a class="jxr_linenumber" name="L132" href="#L132">132</a>                 },
-<a class="jxr_linenumber" name="L133" href="#L133">133</a>                 checkLines(firstLine, secondLine, thirdLine));
-<a class="jxr_linenumber" name="L134" href="#L134">134</a>     }
-<a class="jxr_linenumber" name="L135" href="#L135">135</a> 
-<a class="jxr_linenumber" name="L136" href="#L136">136</a>     @Test
-<a class="jxr_linenumber" name="L137" href="#L137">137</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> addLicenseToJavaWithoutPackage() <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="L138" href="#L138">138</a>         String filename = <span class="jxr_string">"tmp.java"</span>;
-<a class="jxr_linenumber" name="L139" href="#L139">139</a>         String commentLine = <span class="jxr_string">"/*"</span>;
-<a class="jxr_linenumber" name="L140" href="#L140">140</a>         commonTestTemplate(filename, <strong class="jxr_keyword">new</strong> FileCreator() {
-<a class="jxr_linenumber" name="L141" href="#L141">141</a>                     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> createFile(Writer writer)
-<a class="jxr_linenumber" name="L142" href="#L142">142</a>                             <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="L143" href="#L143">143</a>                         writer.write(<span class="jxr_string">"public class test {\n"</span>);
-<a class="jxr_linenumber" name="L144" href="#L144">144</a>                         writer.write(<span class="jxr_string">"}\n"</span>);
-<a class="jxr_linenumber" name="L145" href="#L145">145</a>                     }
-<a class="jxr_linenumber" name="L146" href="#L146">146</a>                 },
-<a class="jxr_linenumber" name="L147" href="#L147">147</a>                 checkLines(commentLine));
-<a class="jxr_linenumber" name="L148" href="#L148">148</a>     }
-<a class="jxr_linenumber" name="L149" href="#L149">149</a> 
-<a class="jxr_linenumber" name="L150" href="#L150">150</a>     @Test
-<a class="jxr_linenumber" name="L151" href="#L151">151</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> addLicenseToXML() <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="L152" href="#L152">152</a>         String filename = <span class="jxr_string">"tmp.xml"</span>;
-<a class="jxr_linenumber" name="L153" href="#L153">153</a>         <strong class="jxr_keyword">final</strong> String firstLine = <span class="jxr_string">"&lt;?xml version='1.0'?&gt;"</span>;
-<a class="jxr_linenumber" name="L154" href="#L154">154</a>         <strong class="jxr_keyword">final</strong> String secondLine = <span class="jxr_string">""</span>;
-<a class="jxr_linenumber" name="L155" href="#L155">155</a>         <strong class="jxr_keyword">final</strong> String thirdLine = <span class="jxr_string">"&lt;!--"</span>;
-<a class="jxr_linenumber" name="L156" href="#L156">156</a> 
-<a class="jxr_linenumber" name="L157" href="#L157">157</a>         commonTestTemplate(filename, <strong class="jxr_keyword">new</strong> FileCreator() {
-<a class="jxr_linenumber" name="L158" href="#L158">158</a>                     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> createFile(Writer writer)
-<a class="jxr_linenumber" name="L159" href="#L159">159</a>                             <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="L160" href="#L160">160</a>                         writer.write(firstLine + <span class="jxr_string">"\n"</span>);
-<a class="jxr_linenumber" name="L161" href="#L161">161</a>                         writer.write(<span class="jxr_string">"\n"</span>);
-<a class="jxr_linenumber" name="L162" href="#L162">162</a>                         writer.write(<span class="jxr_string">"&lt;xml&gt;\n"</span>);
-<a class="jxr_linenumber" name="L163" href="#L163">163</a>                         writer.write(<span class="jxr_string">"&lt;/xml&gt;\n"</span>);
-<a class="jxr_linenumber" name="L164" href="#L164">164</a>                     }
-<a class="jxr_linenumber" name="L165" href="#L165">165</a>                 },
-<a class="jxr_linenumber" name="L166" href="#L166">166</a>                 checkLines(firstLine, secondLine, thirdLine));
-<a class="jxr_linenumber" name="L167" href="#L167">167</a>     }
-<a class="jxr_linenumber" name="L168" href="#L168">168</a> 
-<a class="jxr_linenumber" name="L169" href="#L169">169</a>     @Test
-<a class="jxr_linenumber" name="L170" href="#L170">170</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> addLicenseToXMLWithoutDecl() <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="L171" href="#L171">171</a>         String filename = <span class="jxr_string">"tmp.xml"</span>;
-<a class="jxr_linenumber" name="L172" href="#L172">172</a>         <strong class="jxr_keyword">final</strong> String firstLine = <span class="jxr_string">"&lt;?xml version='1.0'?&gt;"</span>;
-<a class="jxr_linenumber" name="L173" href="#L173">173</a>         <strong class="jxr_keyword">final</strong> String secondLine = <span class="jxr_string">"&lt;!--"</span>;
-<a class="jxr_linenumber" name="L174" href="#L174">174</a> 
-<a class="jxr_linenumber" name="L175" href="#L175">175</a>         commonTestTemplate(filename, <strong class="jxr_keyword">new</strong> FileCreator() {
-<a class="jxr_linenumber" name="L176" href="#L176">176</a>                     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> createFile(Writer writer)
-<a class="jxr_linenumber" name="L177" href="#L177">177</a>                             <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="L178" href="#L178">178</a>                         writer.write(<span class="jxr_string">"&lt;xml&gt;\n"</span>);
-<a class="jxr_linenumber" name="L179" href="#L179">179</a>                         writer.write(<span class="jxr_string">"&lt;/xml&gt;\n"</span>);
-<a class="jxr_linenumber" name="L180" href="#L180">180</a>                     }
-<a class="jxr_linenumber" name="L181" href="#L181">181</a>                 },
-<a class="jxr_linenumber" name="L182" href="#L182">182</a>                 checkLines(firstLine, secondLine));
-<a class="jxr_linenumber" name="L183" href="#L183">183</a>     }
-<a class="jxr_linenumber" name="L184" href="#L184">184</a> 
-<a class="jxr_linenumber" name="L185" href="#L185">185</a>     @Test
-<a class="jxr_linenumber" name="L186" href="#L186">186</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> addLicenseToHTML() <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="L187" href="#L187">187</a>         String filename = <span class="jxr_string">"tmp.html"</span>;
-<a class="jxr_linenumber" name="L188" href="#L188">188</a>         String commentLine = <span class="jxr_string">"&lt;!--"</span>;
-<a class="jxr_linenumber" name="L189" href="#L189">189</a> 
-<a class="jxr_linenumber" name="L190" href="#L190">190</a>         commonTestTemplate(filename, <strong class="jxr_keyword">new</strong> FileCreator() {
-<a class="jxr_linenumber" name="L191" href="#L191">191</a>                     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> createFile(Writer writer)
-<a class="jxr_linenumber" name="L192" href="#L192">192</a>                             <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="L193" href="#L193">193</a>                         writer.write(<span class="jxr_string">"&lt;html&gt;\n"</span>);
-<a class="jxr_linenumber" name="L194" href="#L194">194</a>                         writer.write(<span class="jxr_string">"\n"</span>);
-<a class="jxr_linenumber" name="L195" href="#L195">195</a>                         writer.write(<span class="jxr_string">"&lt;/html&gt;\n"</span>);
-<a class="jxr_linenumber" name="L196" href="#L196">196</a>                     }
-<a class="jxr_linenumber" name="L197" href="#L197">197</a>                 },
-<a class="jxr_linenumber" name="L198" href="#L198">198</a>                 checkLines(commentLine));
-<a class="jxr_linenumber" name="L199" href="#L199">199</a>     }
-<a class="jxr_linenumber" name="L200" href="#L200">200</a> 
-<a class="jxr_linenumber" name="L201" href="#L201">201</a>     @Test
-<a class="jxr_linenumber" name="L202" href="#L202">202</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> addLicenseToCSS() <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="L203" href="#L203">203</a>         String filename = <span class="jxr_string">"tmp.css"</span>;
-<a class="jxr_linenumber" name="L204" href="#L204">204</a>         String firstLine = <span class="jxr_string">"/*"</span>;
-<a class="jxr_linenumber" name="L205" href="#L205">205</a> 
-<a class="jxr_linenumber" name="L206" href="#L206">206</a>         commonTestTemplate(filename, <strong class="jxr_keyword">new</strong> FileCreator() {
-<a class="jxr_linenumber" name="L207" href="#L207">207</a>                     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> createFile(Writer writer)
-<a class="jxr_linenumber" name="L208" href="#L208">208</a>                             <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="L209" href="#L209">209</a>                         writer.write(<span class="jxr_string">".class {\n"</span>);
-<a class="jxr_linenumber" name="L210" href="#L210">210</a>                         writer.write(<span class="jxr_string">" background-color: red;"</span>);
-<a class="jxr_linenumber" name="L211" href="#L211">211</a>                         writer.write(<span class="jxr_string">"}\n"</span>);
-<a class="jxr_linenumber" name="L212" href="#L212">212</a>                     }
-<a class="jxr_linenumber" name="L213" href="#L213">213</a>                 },
-<a class="jxr_linenumber" name="L214" href="#L214">214</a>                 checkLines(firstLine));
-<a class="jxr_linenumber" name="L215" href="#L215">215</a>     }
-<a class="jxr_linenumber" name="L216" href="#L216">216</a> 
-<a class="jxr_linenumber" name="L217" href="#L217">217</a>     @Test
-<a class="jxr_linenumber" name="L218" href="#L218">218</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> addLicenseToJavascript() <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="L219" href="#L219">219</a>         String filename = <span class="jxr_string">"tmp.js"</span>;
-<a class="jxr_linenumber" name="L220" href="#L220">220</a>         String firstLine = <span class="jxr_string">"/*"</span>;
-<a class="jxr_linenumber" name="L221" href="#L221">221</a> 
-<a class="jxr_linenumber" name="L222" href="#L222">222</a>         commonTestTemplate(filename, <strong class="jxr_keyword">new</strong> FileCreator() {
-<a class="jxr_linenumber" name="L223" href="#L223">223</a>                     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> createFile(Writer writer)
-<a class="jxr_linenumber" name="L224" href="#L224">224</a>                             <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="L225" href="#L225">225</a>                         writer.write(<span class="jxr_string">"if (a ==b) {&gt;\n"</span>);
-<a class="jxr_linenumber" name="L226" href="#L226">226</a>                         writer.write(<span class="jxr_string">" alert(\&quot;how useful!\&quot;);"</span>);
-<a class="jxr_linenumber" name="L227" href="#L227">227</a>                         writer.write(<span class="jxr_string">"}\n"</span>);
-<a class="jxr_linenumber" name="L228" href="#L228">228</a>                     }
-<a class="jxr_linenumber" name="L229" href="#L229">229</a>                 },
-<a class="jxr_linenumber" name="L230" href="#L230">230</a>                 checkLines(firstLine));
-<a class="jxr_linenumber" name="L231" href="#L231">231</a>     }
-<a class="jxr_linenumber" name="L232" href="#L232">232</a> 
-<a class="jxr_linenumber" name="L233" href="#L233">233</a>     @Test
-<a class="jxr_linenumber" name="L234" href="#L234">234</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> addLicenseToAPT() <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="L235" href="#L235">235</a>         String filename = <span class="jxr_string">"tmp.apt"</span>;
-<a class="jxr_linenumber" name="L236" href="#L236">236</a>         String firstLine = <span class="jxr_string">"~~"</span> + FIRST_LICENSE_LINE;
-<a class="jxr_linenumber" name="L237" href="#L237">237</a> 
-<a class="jxr_linenumber" name="L238" href="#L238">238</a>         commonTestTemplate(filename, <strong class="jxr_keyword">new</strong> FileCreator() {
-<a class="jxr_linenumber" name="L239" href="#L239">239</a>                     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> createFile(Writer writer)
-<a class="jxr_linenumber" name="L240" href="#L240">240</a>                             <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="L241" href="#L241">241</a>                         writer.write(<span class="jxr_string">"A Simple APT file"</span>);
-<a class="jxr_linenumber" name="L242" href="#L242">242</a>                         writer.write(<span class="jxr_string">" This file contains nothing\n"</span>);
-<a class="jxr_linenumber" name="L243" href="#L243">243</a>                         writer.write(<span class="jxr_string">" of any importance\n"</span>);
-<a class="jxr_linenumber" name="L244" href="#L244">244</a>                     }
-<a class="jxr_linenumber" name="L245" href="#L245">245</a>                 },
-<a class="jxr_linenumber" name="L246" href="#L246">246</a>                 checkLines(firstLine));
-<a class="jxr_linenumber" name="L247" href="#L247">247</a>     }
-<a class="jxr_linenumber" name="L248" href="#L248">248</a> 
-<a class="jxr_linenumber" name="L249" href="#L249">249</a>     @Test
-<a class="jxr_linenumber" name="L250" href="#L250">250</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> addLicenseToProperties() <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="L251" href="#L251">251</a>         String filename = <span class="jxr_string">"tmp.properties"</span>;
-<a class="jxr_linenumber" name="L252" href="#L252">252</a>         String firstLine = <span class="jxr_string">"#"</span> + FIRST_LICENSE_LINE;
-<a class="jxr_linenumber" name="L253" href="#L253">253</a> 
-<a class="jxr_linenumber" name="L254" href="#L254">254</a>         commonTestTemplate(filename, <strong class="jxr_keyword">new</strong> FileCreator() {
-<a class="jxr_linenumber" name="L255" href="#L255">255</a>                     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> createFile(Writer writer)
-<a class="jxr_linenumber" name="L256" href="#L256">256</a>                             <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="L257" href="#L257">257</a>                         writer.write(<span class="jxr_string">"property = value\n"</span>);
-<a class="jxr_linenumber" name="L258" href="#L258">258</a>                         writer.write(<span class="jxr_string">"fun = true\n"</span>);
-<a class="jxr_linenumber" name="L259" href="#L259">259</a>                         writer.write(<span class="jxr_string">"cool = true\n"</span>);
-<a class="jxr_linenumber" name="L260" href="#L260">260</a>                     }
-<a class="jxr_linenumber" name="L261" href="#L261">261</a>                 },
-<a class="jxr_linenumber" name="L262" href="#L262">262</a>                 checkLines(firstLine));
-<a class="jxr_linenumber" name="L263" href="#L263">263</a>     }
-<a class="jxr_linenumber" name="L264" href="#L264">264</a> 
-<a class="jxr_linenumber" name="L265" href="#L265">265</a>     @Test
-<a class="jxr_linenumber" name="L266" href="#L266">266</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> addLicenseToScala() <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="L267" href="#L267">267</a>         String filename = <span class="jxr_string">"tmp.scala"</span>;
-<a class="jxr_linenumber" name="L268" href="#L268">268</a>         <strong class="jxr_keyword">final</strong> String firstLine = <span class="jxr_string">"package foo {"</span>;
-<a class="jxr_linenumber" name="L269" href="#L269">269</a>         <strong class="jxr_keyword">final</strong> String newFirstLine = <span class="jxr_string">"/*"</span>;
-<a class="jxr_linenumber" name="L270" href="#L270">270</a> 
-<a class="jxr_linenumber" name="L271" href="#L271">271</a>         commonTestTemplate(filename, <strong class="jxr_keyword">new</strong> FileCreator() {
-<a class="jxr_linenumber" name="L272" href="#L272">272</a>                     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> createFile(Writer writer)
-<a class="jxr_linenumber" name="L273" href="#L273">273</a>                             <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="L274" href="#L274">274</a>                         writer.write(firstLine + <span class="jxr_string">"\n"</span>);
-<a class="jxr_linenumber" name="L275" href="#L275">275</a>                         writer.write(<span class="jxr_string">"\n"</span>);
-<a class="jxr_linenumber" name="L276" href="#L276">276</a>                         writer.write(<span class="jxr_string">"    object X { val x = 1; }\n"</span>);
-<a class="jxr_linenumber" name="L277" href="#L277">277</a>                         writer.write(<span class="jxr_string">"}\n"</span>);
-<a class="jxr_linenumber" name="L278" href="#L278">278</a>                     }
-<a class="jxr_linenumber" name="L279" href="#L279">279</a>                 },
-<a class="jxr_linenumber" name="L280" href="#L280">280</a>                 <strong class="jxr_keyword">new</strong> NewFileReader() {
-<a class="jxr_linenumber" name="L281" href="#L281">281</a>                     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> readFile(BufferedReader reader)
-<a class="jxr_linenumber" name="L282" href="#L282">282</a>                             <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="L283" href="#L283">283</a>                         String line = reader.readLine();
-<a class="jxr_linenumber" name="L284" href="#L284">284</a>                         assertEquals(
-<a class="jxr_linenumber" name="L285" href="#L285">285</a>                                 newFirstLine, line, <span class="jxr_string">"First line is incorrect"</span>);
-<a class="jxr_linenumber" name="L286" href="#L286">286</a>                         <strong class="jxr_keyword">while</strong> ((line = reader.readLine()) != <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="L287" href="#L287">287</a>                             <strong class="jxr_keyword">if</strong> (line.length() == 0) {
-<a class="jxr_linenumber" name="L288" href="#L288">288</a>                                 line = reader.readLine();
-<a class="jxr_linenumber" name="L289" href="#L289">289</a>                                 <strong class="jxr_keyword">break</strong>;
-<a class="jxr_linenumber" name="L290" href="#L290">290</a>                             }
-<a class="jxr_linenumber" name="L291" href="#L291">291</a>                         }
-<a class="jxr_linenumber" name="L292" href="#L292">292</a>                         assertEquals(
-<a class="jxr_linenumber" name="L293" href="#L293">293</a>                                 firstLine, line, <span class="jxr_string">"Package line is incorrect"</span>);
-<a class="jxr_linenumber" name="L294" href="#L294">294</a>                     }
-<a class="jxr_linenumber" name="L295" href="#L295">295</a>                 });
-<a class="jxr_linenumber" name="L296" href="#L296">296</a>     }
-<a class="jxr_linenumber" name="L297" href="#L297">297</a> 
-<a class="jxr_linenumber" name="L298" href="#L298">298</a>     @Test
-<a class="jxr_linenumber" name="L299" href="#L299">299</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> addLicenseToRubyWithoutHashBang()
-<a class="jxr_linenumber" name="L300" href="#L300">300</a>             <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="L301" href="#L301">301</a>         String filename = <span class="jxr_string">"tmp.rb"</span>;
-<a class="jxr_linenumber" name="L302" href="#L302">302</a>         String firstLine = <span class="jxr_string">"#"</span> + FIRST_LICENSE_LINE;
-<a class="jxr_linenumber" name="L303" href="#L303">303</a> 
-<a class="jxr_linenumber" name="L304" href="#L304">304</a>         commonTestTemplate(filename, <strong class="jxr_keyword">new</strong> FileCreator() {
-<a class="jxr_linenumber" name="L305" href="#L305">305</a>                     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> createFile(Writer writer)
-<a class="jxr_linenumber" name="L306" href="#L306">306</a>                             <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="L307" href="#L307">307</a>                         writer.write(<span class="jxr_string">"class Foo\n"</span>);
-<a class="jxr_linenumber" name="L308" href="#L308">308</a>                         writer.write(<span class="jxr_string">"end\n"</span>);
-<a class="jxr_linenumber" name="L309" href="#L309">309</a>                     }
-<a class="jxr_linenumber" name="L310" href="#L310">310</a>                 },
-<a class="jxr_linenumber" name="L311" href="#L311">311</a>                 checkLines(firstLine));
-<a class="jxr_linenumber" name="L312" href="#L312">312</a>     }
-<a class="jxr_linenumber" name="L313" href="#L313">313</a> 
-<a class="jxr_linenumber" name="L314" href="#L314">314</a>     @Test
-<a class="jxr_linenumber" name="L315" href="#L315">315</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> addLicenseToRubyWithHashBang() <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="L316" href="#L316">316</a>         String filename = <span class="jxr_string">"tmp.rb"</span>;
-<a class="jxr_linenumber" name="L317" href="#L317">317</a>         <strong class="jxr_keyword">final</strong> String firstLine = <span class="jxr_string">"#!/usr/bin/env ruby"</span>;
-<a class="jxr_linenumber" name="L318" href="#L318">318</a>         String secondLine = <span class="jxr_string">"#"</span> + FIRST_LICENSE_LINE;
-<a class="jxr_linenumber" name="L319" href="#L319">319</a> 
-<a class="jxr_linenumber" name="L320" href="#L320">320</a>         commonTestTemplate(filename, <strong class="jxr_keyword">new</strong> FileCreator() {
-<a class="jxr_linenumber" name="L321" href="#L321">321</a>                     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> createFile(Writer writer)
-<a class="jxr_linenumber" name="L322" href="#L322">322</a>                             <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="L323" href="#L323">323</a>                         writer.write(firstLine + <span class="jxr_string">"\n"</span>);
-<a class="jxr_linenumber" name="L324" href="#L324">324</a>                         writer.write(<span class="jxr_string">"class Foo\n"</span>);
-<a class="jxr_linenumber" name="L325" href="#L325">325</a>                         writer.write(<span class="jxr_string">"end\n"</span>);
-<a class="jxr_linenumber" name="L326" href="#L326">326</a>                     }
-<a class="jxr_linenumber" name="L327" href="#L327">327</a>                 },
-<a class="jxr_linenumber" name="L328" href="#L328">328</a>                 checkLines(firstLine, secondLine));
-<a class="jxr_linenumber" name="L329" href="#L329">329</a>     }
-<a class="jxr_linenumber" name="L330" href="#L330">330</a> 
-<a class="jxr_linenumber" name="L331" href="#L331">331</a>     @Test
-<a class="jxr_linenumber" name="L332" href="#L332">332</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> addLicenseToPerlWithoutHashBang()
-<a class="jxr_linenumber" name="L333" href="#L333">333</a>             <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="L334" href="#L334">334</a>         String filename = <span class="jxr_string">"tmp.pl"</span>;
-<a class="jxr_linenumber" name="L335" href="#L335">335</a>         String firstLine = <span class="jxr_string">"#"</span> + FIRST_LICENSE_LINE;
-<a class="jxr_linenumber" name="L336" href="#L336">336</a> 
-<a class="jxr_linenumber" name="L337" href="#L337">337</a>         commonTestTemplate(filename, <strong class="jxr_keyword">new</strong> FileCreator() {
-<a class="jxr_linenumber" name="L338" href="#L338">338</a>                     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> createFile(Writer writer)
-<a class="jxr_linenumber" name="L339" href="#L339">339</a>                             <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="L340" href="#L340">340</a>                         writer.write(<span class="jxr_string">"print \&quot;Hello world\&quot;\n"</span>);
-<a class="jxr_linenumber" name="L341" href="#L341">341</a>                     }
-<a class="jxr_linenumber" name="L342" href="#L342">342</a>                 },
-<a class="jxr_linenumber" name="L343" href="#L343">343</a>                 checkLines(firstLine));
-<a class="jxr_linenumber" name="L344" href="#L344">344</a>     }
-<a class="jxr_linenumber" name="L345" href="#L345">345</a> 
-<a class="jxr_linenumber" name="L346" href="#L346">346</a>     @Test
-<a class="jxr_linenumber" name="L347" href="#L347">347</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> addLicenseToPerlWithHashBang() <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="L348" href="#L348">348</a>         String filename = <span class="jxr_string">"tmp.pl"</span>;
-<a class="jxr_linenumber" name="L349" href="#L349">349</a>         <strong class="jxr_keyword">final</strong> String firstLine = <span class="jxr_string">"#!/usr/bin/env perl"</span>;
-<a class="jxr_linenumber" name="L350" href="#L350">350</a>         String secondLine = <span class="jxr_string">"#"</span> + FIRST_LICENSE_LINE;
-<a class="jxr_linenumber" name="L351" href="#L351">351</a> 
-<a class="jxr_linenumber" name="L352" href="#L352">352</a>         commonTestTemplate(filename, <strong class="jxr_keyword">new</strong> FileCreator() {
-<a class="jxr_linenumber" name="L353" href="#L353">353</a>                     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> createFile(Writer writer)
-<a class="jxr_linenumber" name="L354" href="#L354">354</a>                             <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="L355" href="#L355">355</a>                         writer.write(firstLine + <span class="jxr_string">"\n"</span>);
-<a class="jxr_linenumber" name="L356" href="#L356">356</a>                         writer.write(<span class="jxr_string">"print \&quot;Hello world\&quot;\n"</span>);
-<a class="jxr_linenumber" name="L357" href="#L357">357</a>                     }
-<a class="jxr_linenumber" name="L358" href="#L358">358</a>                 },
-<a class="jxr_linenumber" name="L359" href="#L359">359</a>                 checkLines(firstLine, secondLine));
-<a class="jxr_linenumber" name="L360" href="#L360">360</a>     }
-<a class="jxr_linenumber" name="L361" href="#L361">361</a> 
-<a class="jxr_linenumber" name="L362" href="#L362">362</a>     @Test
-<a class="jxr_linenumber" name="L363" href="#L363">363</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> addLicenseToPerlModule() <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="L364" href="#L364">364</a>         String filename = <span class="jxr_string">"tmp.pm"</span>;
-<a class="jxr_linenumber" name="L365" href="#L365">365</a>         <strong class="jxr_keyword">final</strong> String firstLine = <span class="jxr_string">"package API::TestAPI;"</span>;
-<a class="jxr_linenumber" name="L366" href="#L366">366</a>         <strong class="jxr_keyword">final</strong> String secondLine = <span class="jxr_string">""</span>; 
-<a class="jxr_linenumber" name="L367" href="#L367">367</a>         <strong class="jxr_keyword">final</strong> String thirdLine = <span class="jxr_string">"#"</span> + FIRST_LICENSE_LINE;
-<a class="jxr_linenumber" name="L368" href="#L368">368</a> 
-<a class="jxr_linenumber" name="L369" href="#L369">369</a>         commonTestTemplate(filename, <strong class="jxr_keyword">new</strong> FileCreator() {
-<a class="jxr_linenumber" name="L370" href="#L370">370</a>                     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> createFile(Writer writer)
-<a class="jxr_linenumber" name="L371" href="#L371">371</a>                             <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="L372" href="#L372">372</a>                         writer.write(firstLine + <span class="jxr_string">"\n"</span>);
-<a class="jxr_linenumber" name="L373" href="#L373">373</a>                         writer.write(<span class="jxr_string">"print \&quot;Hello world\&quot;\n"</span>);
-<a class="jxr_linenumber" name="L374" href="#L374">374</a>                     }
-<a class="jxr_linenumber" name="L375" href="#L375">375</a>                 },
-<a class="jxr_linenumber" name="L376" href="#L376">376</a>                 checkLines(firstLine, secondLine, thirdLine));
-<a class="jxr_linenumber" name="L377" href="#L377">377</a>     }    
-<a class="jxr_linenumber" name="L378" href="#L378">378</a> 
-<a class="jxr_linenumber" name="L379" href="#L379">379</a>     @Test
-<a class="jxr_linenumber" name="L380" href="#L380">380</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> addLicenseToTclWithoutHashBang()
-<a class="jxr_linenumber" name="L381" href="#L381">381</a>             <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="L382" href="#L382">382</a>         String filename = <span class="jxr_string">"tmp.tcl"</span>;
-<a class="jxr_linenumber" name="L383" href="#L383">383</a>         String firstLine = <span class="jxr_string">"#"</span> + FIRST_LICENSE_LINE;
-<a class="jxr_linenumber" name="L384" href="#L384">384</a> 
-<a class="jxr_linenumber" name="L385" href="#L385">385</a>         commonTestTemplate(filename, <strong class="jxr_keyword">new</strong> FileCreator() {
-<a class="jxr_linenumber" name="L386" href="#L386">386</a>                     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> createFile(Writer writer)
-<a class="jxr_linenumber" name="L387" href="#L387">387</a>                             <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="L388" href="#L388">388</a>                         writer.write(<span class="jxr_string">"puts \&quot;Hello world\&quot;\n"</span>);
-<a class="jxr_linenumber" name="L389" href="#L389">389</a>                     }
-<a class="jxr_linenumber" name="L390" href="#L390">390</a>                 },
-<a class="jxr_linenumber" name="L391" href="#L391">391</a>                 checkLines(firstLine));
-<a class="jxr_linenumber" name="L392" href="#L392">392</a>     }
-<a class="jxr_linenumber" name="L393" href="#L393">393</a> 
-<a class="jxr_linenumber" name="L394" href="#L394">394</a>     @Test
-<a class="jxr_linenumber" name="L395" href="#L395">395</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> addLicenseToTclWithHashBang() <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="L396" href="#L396">396</a>         String filename = <span class="jxr_string">"tmp.tcl"</span>;
-<a class="jxr_linenumber" name="L397" href="#L397">397</a>         <strong class="jxr_keyword">final</strong> String firstLine = <span class="jxr_string">"#!/usr/bin/env tcl"</span>;
-<a class="jxr_linenumber" name="L398" href="#L398">398</a>         String secondLine = <span class="jxr_string">"#"</span> + FIRST_LICENSE_LINE;
-<a class="jxr_linenumber" name="L399" href="#L399">399</a> 
-<a class="jxr_linenumber" name="L400" href="#L400">400</a>         commonTestTemplate(filename, <strong class="jxr_keyword">new</strong> FileCreator() {
-<a class="jxr_linenumber" name="L401" href="#L401">401</a>                     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> createFile(Writer writer)
-<a class="jxr_linenumber" name="L402" href="#L402">402</a>                             <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="L403" href="#L403">403</a>                         writer.write(firstLine + <span class="jxr_string">"\n"</span>);
-<a class="jxr_linenumber" name="L404" href="#L404">404</a>                         writer.write(<span class="jxr_string">"puts \&quot;Hello world\&quot;\n"</span>);
-<a class="jxr_linenumber" name="L405" href="#L405">405</a>                     }
-<a class="jxr_linenumber" name="L406" href="#L406">406</a>                 },
-<a class="jxr_linenumber" name="L407" href="#L407">407</a>                 checkLines(firstLine, secondLine));
-<a class="jxr_linenumber" name="L408" href="#L408">408</a>     }
-<a class="jxr_linenumber" name="L409" href="#L409">409</a> 
-<a class="jxr_linenumber" name="L410" href="#L410">410</a>     @Test
-<a class="jxr_linenumber" name="L411" href="#L411">411</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> addLicenseToPHP() <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="L412" href="#L412">412</a>         String filename = <span class="jxr_string">"tmp.php"</span>;
-<a class="jxr_linenumber" name="L413" href="#L413">413</a>         <strong class="jxr_keyword">final</strong> String firstLine = <span class="jxr_string">"&lt;?php"</span>;
-<a class="jxr_linenumber" name="L414" href="#L414">414</a>         <strong class="jxr_keyword">final</strong> String secondLine = <span class="jxr_string">""</span>;
-<a class="jxr_linenumber" name="L415" href="#L415">415</a>         <strong class="jxr_keyword">final</strong> String thirdLine = <span class="jxr_string">"/*"</span>;
-<a class="jxr_linenumber" name="L416" href="#L416">416</a> 
-<a class="jxr_linenumber" name="L417" href="#L417">417</a>         commonTestTemplate(filename, <strong class="jxr_keyword">new</strong> FileCreator() {
-<a class="jxr_linenumber" name="L418" href="#L418">418</a>                     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> createFile(Writer writer)
-<a class="jxr_linenumber" name="L419" href="#L419">419</a>                             <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="L420" href="#L420">420</a>                         writer.write(firstLine + <span class="jxr_string">"\n"</span>);
-<a class="jxr_linenumber" name="L421" href="#L421">421</a>                         writer.write(<span class="jxr_string">"echo 'Hello World'\n"</span>);
-<a class="jxr_linenumber" name="L422" href="#L422">422</a>                         writer.write(<span class="jxr_string">"?&gt;\n"</span>);
-<a class="jxr_linenumber" name="L423" href="#L423">423</a>                     }
-<a class="jxr_linenumber" name="L424" href="#L424">424</a>                 },
-<a class="jxr_linenumber" name="L425" href="#L425">425</a>                 checkLines(firstLine, secondLine, thirdLine));
-<a class="jxr_linenumber" name="L426" href="#L426">426</a>     }
-<a class="jxr_linenumber" name="L427" href="#L427">427</a> 
-<a class="jxr_linenumber" name="L428" href="#L428">428</a>     @Test
-<a class="jxr_linenumber" name="L429" href="#L429">429</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> addLicenseToCSharp() <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="L430" href="#L430">430</a>         String filename = <span class="jxr_string">"tmp.cs"</span>;
-<a class="jxr_linenumber" name="L431" href="#L431">431</a>         String firstLine = <span class="jxr_string">"/*"</span>;
-<a class="jxr_linenumber" name="L432" href="#L432">432</a> 
-<a class="jxr_linenumber" name="L433" href="#L433">433</a>         commonTestTemplate(filename, <strong class="jxr_keyword">new</strong> FileCreator() {
-<a class="jxr_linenumber" name="L434" href="#L434">434</a>                     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> createFile(Writer writer)
-<a class="jxr_linenumber" name="L435" href="#L435">435</a>                             <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="L436" href="#L436">436</a>                         writer.write(<span class="jxr_string">"namespace org.example {\n"</span>);
-<a class="jxr_linenumber" name="L437" href="#L437">437</a>                         writer.write(<span class="jxr_string">"    public class Foo {\n"</span>);
-<a class="jxr_linenumber" name="L438" href="#L438">438</a>                         writer.write(<span class="jxr_string">"    }\n"</span>);
-<a class="jxr_linenumber" name="L439" href="#L439">439</a>                         writer.write(<span class="jxr_string">"}\n"</span>);
-<a class="jxr_linenumber" name="L440" href="#L440">440</a>                     }
-<a class="jxr_linenumber" name="L441" href="#L441">441</a>                 },
-<a class="jxr_linenumber" name="L442" href="#L442">442</a>                 checkLines(firstLine));
-<a class="jxr_linenumber" name="L443" href="#L443">443</a>     }
-<a class="jxr_linenumber" name="L444" href="#L444">444</a> 
-<a class="jxr_linenumber" name="L445" href="#L445">445</a>     @Test
-<a class="jxr_linenumber" name="L446" href="#L446">446</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> addLicenseToGroovy() <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="L447" href="#L447">447</a>         String filename = <span class="jxr_string">"tmp.groovy"</span>;
-<a class="jxr_linenumber" name="L448" href="#L448">448</a>         String firstLine = <span class="jxr_string">"/*"</span>;
-<a class="jxr_linenumber" name="L449" href="#L449">449</a> 
-<a class="jxr_linenumber" name="L450" href="#L450">450</a>         commonTestTemplate(filename, <strong class="jxr_keyword">new</strong> FileCreator() {
-<a class="jxr_linenumber" name="L451" href="#L451">451</a>                     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> createFile(Writer writer)
-<a class="jxr_linenumber" name="L452" href="#L452">452</a>                             <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="L453" href="#L453">453</a>                         writer.write(<span class="jxr_string">"package org.example \n"</span>);
-<a class="jxr_linenumber" name="L454" href="#L454">454</a>                         writer.write(<span class="jxr_string">"    class Foo {\n"</span>);
-<a class="jxr_linenumber" name="L455" href="#L455">455</a>                         writer.write(<span class="jxr_string">"    }\n"</span>);
-<a class="jxr_linenumber" name="L456" href="#L456">456</a>                     }
-<a class="jxr_linenumber" name="L457" href="#L457">457</a>                 },
-<a class="jxr_linenumber" name="L458" href="#L458">458</a>                 checkLines(firstLine));
-<a class="jxr_linenumber" name="L459" href="#L459">459</a>     }
-<a class="jxr_linenumber" name="L460" href="#L460">460</a> 
-<a class="jxr_linenumber" name="L461" href="#L461">461</a>     @Test
-<a class="jxr_linenumber" name="L462" href="#L462">462</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> addLicenseToCPlusPlus() <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="L463" href="#L463">463</a>         String filename = <span class="jxr_string">"tmp.cpp"</span>;
-<a class="jxr_linenumber" name="L464" href="#L464">464</a>         String firstLine = <span class="jxr_string">"/*"</span>;
-<a class="jxr_linenumber" name="L465" href="#L465">465</a> 
-<a class="jxr_linenumber" name="L466" href="#L466">466</a>         commonTestTemplate(filename, <strong class="jxr_keyword">new</strong> FileCreator() {
-<a class="jxr_linenumber" name="L467" href="#L467">467</a>                     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> createFile(Writer writer)
-<a class="jxr_linenumber" name="L468" href="#L468">468</a>                             <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="L469" href="#L469">469</a>                         writer.write(<span class="jxr_string">"namespace org.example {\n"</span>);
-<a class="jxr_linenumber" name="L470" href="#L470">470</a>                         writer.write(<span class="jxr_string">"    public class Foo {\n"</span>);
-<a class="jxr_linenumber" name="L471" href="#L471">471</a>                         writer.write(<span class="jxr_string">"    }\n"</span>);
-<a class="jxr_linenumber" name="L472" href="#L472">472</a>                         writer.write(<span class="jxr_string">"}\n"</span>);
-<a class="jxr_linenumber" name="L473" href="#L473">473</a>                     }
-<a class="jxr_linenumber" name="L474" href="#L474">474</a>                 },
-<a class="jxr_linenumber" name="L475" href="#L475">475</a>                 checkLines(firstLine));
-<a class="jxr_linenumber" name="L476" href="#L476">476</a>     }
-<a class="jxr_linenumber" name="L477" href="#L477">477</a> 
-<a class="jxr_linenumber" name="L478" href="#L478">478</a>     @Test
-<a class="jxr_linenumber" name="L479" href="#L479">479</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> addLicenseToGo() <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="L480" href="#L480">480</a>         String filename = <span class="jxr_string">"tmp.go"</span>;
-<a class="jxr_linenumber" name="L481" href="#L481">481</a>         <strong class="jxr_keyword">final</strong> String firstLine = <span class="jxr_string">"package main"</span>;
-<a class="jxr_linenumber" name="L482" href="#L482">482</a>         String secondLine = <span class="jxr_string">""</span>;
-<a class="jxr_linenumber" name="L483" href="#L483">483</a>         String thirdLine = <span class="jxr_string">"/*"</span>;
-<a class="jxr_linenumber" name="L484" href="#L484">484</a>         
-<a class="jxr_linenumber" name="L485" href="#L485">485</a>         		
-<a class="jxr_linenumber" name="L486" href="#L486">486</a> 
-<a class="jxr_linenumber" name="L487" href="#L487">487</a>         commonTestTemplate(filename, <strong class="jxr_keyword">new</strong> FileCreator() {
-<a class="jxr_linenumber" name="L488" href="#L488">488</a>                     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> createFile(Writer writer)
-<a class="jxr_linenumber" name="L489" href="#L489">489</a>                             <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="L490" href="#L490">490</a>                         writer.write(firstLine + <span class="jxr_string">"\n"</span>);
-<a class="jxr_linenumber" name="L491" href="#L491">491</a>                         writer.write(<span class="jxr_string">"import (\n"</span>);
-<a class="jxr_linenumber" name="L492" href="#L492">492</a>                         writer.write(<span class="jxr_string">"    log\n"</span>);
-<a class="jxr_linenumber" name="L493" href="#L493">493</a>                         writer.write(<span class="jxr_string">")\n"</span>);
-<a class="jxr_linenumber" name="L494" href="#L494">494</a>                     }
-<a class="jxr_linenumber" name="L495" href="#L495">495</a>                 },
-<a class="jxr_linenumber" name="L496" href="#L496">496</a>                 checkLines(firstLine, secondLine, thirdLine));
-<a class="jxr_linenumber" name="L497" href="#L497">497</a>     }    
-<a class="jxr_linenumber" name="L498" href="#L498">498</a> 
-<a class="jxr_linenumber" name="L499" href="#L499">499</a>     @Test
-<a class="jxr_linenumber" name="L500" href="#L500">500</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> fileWithBOM() <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="L501" href="#L501">501</a>         File f = Resources.getResourceFile(<span class="jxr_string">"violations/FilterTest.cs"</span>);
-<a class="jxr_linenumber" name="L502" href="#L502">502</a>        
-<a class="jxr_linenumber" name="L503" href="#L503">503</a>         ApacheV2LicenseAppender appender =
-<a class="jxr_linenumber" name="L504" href="#L504">504</a>                 <strong class="jxr_keyword">new</strong> ApacheV2LicenseAppender();
-<a class="jxr_linenumber" name="L505" href="#L505">505</a>         appender.append(f);
-<a class="jxr_linenumber" name="L506" href="#L506">506</a> 
-<a class="jxr_linenumber" name="L507" href="#L507">507</a>         <strong class="jxr_keyword">try</strong> (BufferedReader r =  <strong class="jxr_keyword">new</strong> BufferedReader(<strong class="jxr_keyword">new</strong> FileReader(f.getAbsolutePath()
-<a class="jxr_linenumber" name="L508" href="#L508">508</a>                     + <span class="jxr_string">".new"</span>))) {
-<a class="jxr_linenumber" name="L509" href="#L509">509</a>             assertEquals(<span class="jxr_string">"/*"</span>, r.readLine());
-<a class="jxr_linenumber" name="L510" href="#L510">510</a>             String line = <strong class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="L511" href="#L511">511</a>             <strong class="jxr_keyword">while</strong> ((line = r.readLine()) != <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="L512" href="#L512">512</a>                 <strong class="jxr_keyword">if</strong> (line.trim().length() == 0) {
-<a class="jxr_linenumber" name="L513" href="#L513">513</a>                     <strong class="jxr_keyword">break</strong>;
-<a class="jxr_linenumber" name="L514" href="#L514">514</a>                 }
-<a class="jxr_linenumber" name="L515" href="#L515">515</a>             }
-<a class="jxr_linenumber" name="L516" href="#L516">516</a>             assertEquals(<span class="jxr_string">"#if NET_2_0"</span>, r.readLine());
-<a class="jxr_linenumber" name="L517" href="#L517">517</a>         }
-<a class="jxr_linenumber" name="L518" href="#L518">518</a>     }
-<a class="jxr_linenumber" name="L519" href="#L519">519</a> 
-<a class="jxr_linenumber" name="L520" href="#L520">520</a>     @Test
-<a class="jxr_linenumber" name="L521" href="#L521">521</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> addLicenseToVS2003solution() <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="L522" href="#L522">522</a>         String filename = <span class="jxr_string">"tmp.sln"</span>;
-<a class="jxr_linenumber" name="L523" href="#L523">523</a>         <strong class="jxr_keyword">final</strong> String firstLine = <span class="jxr_string">"Microsoft Visual Studio Solution File,"</span>
-<a class="jxr_linenumber" name="L524" href="#L524">524</a>                 + <span class="jxr_string">" Format Version 8.0"</span>;
-<a class="jxr_linenumber" name="L525" href="#L525">525</a>         String secondLine = <span class="jxr_string">"#"</span> + FIRST_LICENSE_LINE;
-<a class="jxr_linenumber" name="L526" href="#L526">526</a> 
-<a class="jxr_linenumber" name="L527" href="#L527">527</a>         commonTestTemplate(filename, <strong class="jxr_keyword">new</strong> FileCreator() {
-<a class="jxr_linenumber" name="L528" href="#L528">528</a>                     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> createFile(Writer writer)
-<a class="jxr_linenumber" name="L529" href="#L529">529</a>                             <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="L530" href="#L530">530</a>                         writer.write(firstLine + <span class="jxr_string">"\n"</span>);
-<a class="jxr_linenumber" name="L531" href="#L531">531</a>                         writer.write(<span class="jxr_string">"Project(\&quot;{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\&quot;) = \&quot;ConsoleApp\&quot;, \&quot;Tutorials&#92;&#92;ConsoleApp&#92;&#92;cs&#92;&#92;src&#92;&#92;ConsoleApp.csproj\&quot;, \&quot;{933969DF-2BC5-44E6-8B1A-400FC276A23F}\&quot;\n"</span>);
-<a class="jxr_linenumber" name="L532" href="#L532">532</a>                         writer.write(<span class="jxr_string">"\tProjectSection(WebsiteProperties) = preProject\n"</span>);
-<a class="jxr_linenumber" name="L533" href="#L533">533</a>                         writer.write(<span class="jxr_string">"\t\tDebug.AspNetCompiler.Debug = \&quot;True\&quot;\n"</span>);
-<a class="jxr_linenumber" name="L534" href="#L534">534</a>                         writer.write(<span class="jxr_string">"\t\tRelease.AspNetCompiler.Debug = \&quot;False\&quot;\n"</span>);
-<a class="jxr_linenumber" name="L535" href="#L535">535</a>                         writer.write(<span class="jxr_string">"\tEndProjectSection\n"</span>);
-<a class="jxr_linenumber" name="L536" href="#L536">536</a>                         writer.write(<span class="jxr_string">"EndProject\n"</span>);
-<a class="jxr_linenumber" name="L537" href="#L537">537</a>                     }
-<a class="jxr_linenumber" name="L538" href="#L538">538</a>                 },
-<a class="jxr_linenumber" name="L539" href="#L539">539</a>                 checkLines(firstLine, secondLine));
-<a class="jxr_linenumber" name="L540" href="#L540">540</a>     }
-<a class="jxr_linenumber" name="L541" href="#L541">541</a> 
-<a class="jxr_linenumber" name="L542" href="#L542">542</a>     @Test
-<a class="jxr_linenumber" name="L543" href="#L543">543</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> addLicenseToVS2005solution() <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="L544" href="#L544">544</a>         String filename = <span class="jxr_string">"tmp.sln"</span>;
-<a class="jxr_linenumber" name="L545" href="#L545">545</a>         <strong class="jxr_keyword">final</strong> String firstLine = <span class="jxr_string">"Microsoft Visual Studio Solution File,"</span>
-<a class="jxr_linenumber" name="L546" href="#L546">546</a>                 + <span class="jxr_string">" Format Version 9.0"</span>;
-<a class="jxr_linenumber" name="L547" href="#L547">547</a>         <strong class="jxr_keyword">final</strong> String secondLine = <span class="jxr_string">"# Visual Studio 2005"</span>;
-<a class="jxr_linenumber" name="L548" href="#L548">548</a>         <strong class="jxr_keyword">final</strong> String thirdLine = <span class="jxr_string">"#"</span> + FIRST_LICENSE_LINE;
-<a class="jxr_linenumber" name="L549" href="#L549">549</a> 
-<a class="jxr_linenumber" name="L550" href="#L550">550</a>         commonTestTemplate(filename, <strong class="jxr_keyword">new</strong> FileCreator() {
-<a class="jxr_linenumber" name="L551" href="#L551">551</a>                     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> createFile(Writer writer)
-<a class="jxr_linenumber" name="L552" href="#L552">552</a>                             <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="L553" href="#L553">553</a>                         writer.write(firstLine + <span class="jxr_string">"\n"</span>);
-<a class="jxr_linenumber" name="L554" href="#L554">554</a>                         writer.write(secondLine + <span class="jxr_string">"\n"</span>);
-<a class="jxr_linenumber" name="L555" href="#L555">555</a>                         writer.write(<span class="jxr_string">"Project(\&quot;{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\&quot;) = \&quot;ConsoleApp\&quot;, \&quot;Tutorials&#92;&#92;ConsoleApp&#92;&#92;cs&#92;&#92;src&#92;&#92;ConsoleApp.csproj\&quot;, \&quot;{933969DF-2BC5-44E6-8B1A-400FC276A23F}\&quot;\n"</span>);
-<a class="jxr_linenumber" name="L556" href="#L556">556</a>                         writer.write(<span class="jxr_string">"\tProjectSection(WebsiteProperties) = preProject\n"</span>);
-<a class="jxr_linenumber" name="L557" href="#L557">557</a>                         writer.write(<span class="jxr_string">"\t\tDebug.AspNetCompiler.Debug = \&quot;True\&quot;\n"</span>);
-<a class="jxr_linenumber" name="L558" href="#L558">558</a>                         writer.write(<span class="jxr_string">"\t\tRelease.AspNetCompiler.Debug = \&quot;False\&quot;\n"</span>);
-<a class="jxr_linenumber" name="L559" href="#L559">559</a>                         writer.write(<span class="jxr_string">"\tEndProjectSection\n"</span>);
-<a class="jxr_linenumber" name="L560" href="#L560">560</a>                         writer.write(<span class="jxr_string">"EndProject\n"</span>);
-<a class="jxr_linenumber" name="L561" href="#L561">561</a>                     }
-<a class="jxr_linenumber" name="L562" href="#L562">562</a>                 },
-<a class="jxr_linenumber" name="L563" href="#L563">563</a>                 checkLines(firstLine, secondLine, thirdLine)
-<a class="jxr_linenumber" name="L564" href="#L564">564</a>                 );
-<a class="jxr_linenumber" name="L565" href="#L565">565</a>     }
-<a class="jxr_linenumber" name="L566" href="#L566">566</a> 
-<a class="jxr_linenumber" name="L567" href="#L567">567</a>     @Test
-<a class="jxr_linenumber" name="L568" href="#L568">568</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> addLicenseToVS2010ExpressSolution() <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="L569" href="#L569">569</a>         String filename = <span class="jxr_string">"tmp.sln"</span>;
-<a class="jxr_linenumber" name="L570" href="#L570">570</a>         <strong class="jxr_keyword">final</strong> String firstLine = <span class="jxr_string">"Microsoft Visual Studio Solution File, "</span>
-<a class="jxr_linenumber" name="L571" href="#L571">571</a>                 + <span class="jxr_string">"Format Version 11.00"</span>;
-<a class="jxr_linenumber" name="L572" href="#L572">572</a>         <strong class="jxr_keyword">final</strong> String secondLine = <span class="jxr_string">"# Visual C# Express 2010"</span>;
-<a class="jxr_linenumber" name="L573" href="#L573">573</a>         <strong class="jxr_keyword">final</strong> String thirdLine = <span class="jxr_string">"#"</span> + FIRST_LICENSE_LINE;
-<a class="jxr_linenumber" name="L574" href="#L574">574</a> 
-<a class="jxr_linenumber" name="L575" href="#L575">575</a>         commonTestTemplate(filename, <strong class="jxr_keyword">new</strong> FileCreator() {
-<a class="jxr_linenumber" name="L576" href="#L576">576</a>                     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> createFile(Writer writer)
-<a class="jxr_linenumber" name="L577" href="#L577">577</a>                             <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="L578" href="#L578">578</a>                         writer.write(firstLine + <span class="jxr_string">"\n"</span>);
-<a class="jxr_linenumber" name="L579" href="#L579">579</a>                         writer.write(secondLine + <span class="jxr_string">"\n"</span>);
-<a class="jxr_linenumber" name="L580" href="#L580">580</a>                         writer.write(<span class="jxr_string">"Project(\&quot;{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\&quot;) = \&quot;Lucene.Net\&quot;, \&quot;..&#92;&#92;..&#92;&#92;..&#92;&#92;src&#92;&#92;core&#92;&#92;Lucene.Net.csproj\&quot;, \&quot;{5D4AD9BE-1FFB-41AB-9943-25737971BF57}\&quot;\n"</span>);
-<a class="jxr_linenumber" name="L581" href="#L581">581</a>                         writer.write(<span class="jxr_string">"EndProject\n"</span>);
-<a class="jxr_linenumber" name="L582" href="#L582">582</a>                         writer.write(<span class="jxr_string">"Project(\&quot;{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\&quot;) = \&quot;Contrib.Highlighter\&quot;, \&quot;..&#92;&#92;..&#92;&#92;..&#92;&#92;src&#92;&#92;contrib&#92;&#92;Highlighter&#92;&#92;Contrib.Highlighter.csproj\&quot;, \&quot;{901D5415-383C-4AA6-A256-879558841BEA}\&quot;\n"</span>);
-<a class="jxr_linenumber" name="L583" href="#L583">583</a>                         writer.write(<span class="jxr_string">"EndProject\n"</span>);
-<a class="jxr_linenumber" name="L584" href="#L584">584</a>                         writer.write(<span class="jxr_string">"Global\n"</span>);
-<a class="jxr_linenumber" name="L585" href="#L585">585</a>                         writer.write(<span class="jxr_string">"GlobalSection(SolutionConfigurationPlatforms) = preSolution\n"</span>);
-<a class="jxr_linenumber" name="L586" href="#L586">586</a>                         writer.write(<span class="jxr_string">"Debug|Any CPU = Debug|Any CPU\n"</span>);
-<a class="jxr_linenumber" name="L587" href="#L587">587</a>                         writer.write(<span class="jxr_string">"Release|Any CPU = Release|Any CPU\n"</span>);
-<a class="jxr_linenumber" name="L588" href="#L588">588</a>                         writer.write(<span class="jxr_string">"EndGlobalSection\n"</span>);
-<a class="jxr_linenumber" name="L589" href="#L589">589</a>                         writer.write(<span class="jxr_string">"GlobalSection(ProjectConfigurationPlatforms) = postSolution\n"</span>);
-<a class="jxr_linenumber" name="L590" href="#L590">590</a>                         writer.write(<span class="jxr_string">"{5D4AD9BE-1FFB-41AB-9943-25737971BF57}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n"</span>);
-<a class="jxr_linenumber" name="L591" href="#L591">591</a>                         writer.write(<span class="jxr_string">"{5D4AD9BE-1FFB-41AB-9943-25737971BF57}.Debug|Any CPU.Build.0 = Debug|Any CPU\n"</span>);
-<a class="jxr_linenumber" name="L592" href="#L592">592</a>                         writer.write(<span class="jxr_string">"{5D4AD9BE-1FFB-41AB-9943-25737971BF57}.Release|Any CPU.ActiveCfg = Release|Any CPU\n"</span>);
-<a class="jxr_linenumber" name="L593" href="#L593">593</a>                         writer.write(<span class="jxr_string">"{5D4AD9BE-1FFB-41AB-9943-25737971BF57}.Release|Any CPU.Build.0 = Release|Any CPU\n"</span>);
-<a class="jxr_linenumber" name="L594" href="#L594">594</a>                         writer.write(<span class="jxr_string">"{901D5415-383C-4AA6-A256-879558841BEA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n"</span>);
-<a class="jxr_linenumber" name="L595" href="#L595">595</a>                         writer.write(<span class="jxr_string">"{901D5415-383C-4AA6-A256-879558841BEA}.Debug|Any CPU.Build.0 = Debug|Any CPU\n"</span>);
-<a class="jxr_linenumber" name="L596" href="#L596">596</a>                         writer.write(<span class="jxr_string">"{901D5415-383C-4AA6-A256-879558841BEA}.Release|Any CPU.ActiveCfg = Release|Any CPU\n"</span>);
-<a class="jxr_linenumber" name="L597" href="#L597">597</a>                         writer.write(<span class="jxr_string">"{901D5415-383C-4AA6-A256-879558841BEA}.Release|Any CPU.Build.0 = Release|Any CPU\n"</span>);
-<a class="jxr_linenumber" name="L598" href="#L598">598</a>                         writer.write(<span class="jxr_string">"EndGlobalSection\n"</span>);
-<a class="jxr_linenumber" name="L599" href="#L599">599</a>                         writer.write(<span class="jxr_string">"GlobalSection(SolutionProperties) = preSolution\n"</span>);
-<a class="jxr_linenumber" name="L600" href="#L600">600</a>                         writer.write(<span class="jxr_string">"HideSolutionNode = FALSE\n"</span>);
-<a class="jxr_linenumber" name="L601" href="#L601">601</a>                         writer.write(<span class="jxr_string">"EndGlobalSection\n"</span>);
-<a class="jxr_linenumber" name="L602" href="#L602">602</a>                         writer.write(<span class="jxr_string">"EndGlobal \n"</span>);
-<a class="jxr_linenumber" name="L603" href="#L603">603</a>                     }
-<a class="jxr_linenumber" name="L604" href="#L604">604</a>                 },
-<a class="jxr_linenumber" name="L605" href="#L605">605</a>                 checkLines(firstLine, secondLine, thirdLine)
-<a class="jxr_linenumber" name="L606" href="#L606">606</a>                 );
-<a class="jxr_linenumber" name="L607" href="#L607">607</a>     }
-<a class="jxr_linenumber" name="L608" href="#L608">608</a> 
-<a class="jxr_linenumber" name="L609" href="#L609">609</a>     @Test
-<a class="jxr_linenumber" name="L610" href="#L610">610</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> addLicenseToVS2010SolutionWithBlankLine() <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="L611" href="#L611">611</a>         String filename = <span class="jxr_string">"tmp.sln"</span>;
-<a class="jxr_linenumber" name="L612" href="#L612">612</a>         <strong class="jxr_keyword">final</strong> String firstLine = <span class="jxr_string">""</span>;
-<a class="jxr_linenumber" name="L613" href="#L613">613</a>         <strong class="jxr_keyword">final</strong> String secondLine = <span class="jxr_string">"Microsoft Visual Studio Solution File, "</span>
-<a class="jxr_linenumber" name="L614" href="#L614">614</a>                 + <span class="jxr_string">"Format Version 11.00"</span>;
-<a class="jxr_linenumber" name="L615" href="#L615">615</a>         <strong class="jxr_keyword">final</strong> String thirdLine = <span class="jxr_string">"# Visual C# Express 2010"</span>;
-<a class="jxr_linenumber" name="L616" href="#L616">616</a>         <strong class="jxr_keyword">final</strong> String forthLine = <span class="jxr_string">"#"</span> + FIRST_LICENSE_LINE;
-<a class="jxr_linenumber" name="L617" href="#L617">617</a> 
-<a class="jxr_linenumber" name="L618" href="#L618">618</a>         commonTestTemplate(filename, <strong class="jxr_keyword">new</strong> FileCreator() {
-<a class="jxr_linenumber" name="L619" href="#L619">619</a>                     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> createFile(Writer writer)
-<a class="jxr_linenumber" name="L620" href="#L620">620</a>                             <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="L621" href="#L621">621</a>                         writer.write(firstLine + <span class="jxr_string">"\n"</span>);
-<a class="jxr_linenumber" name="L622" href="#L622">622</a>                         writer.write(secondLine + <span class="jxr_string">"\n"</span>);
-<a class="jxr_linenumber" name="L623" href="#L623">623</a>                         writer.write(thirdLine + <span class="jxr_string">"\n"</span>);
-<a class="jxr_linenumber" name="L624" href="#L624">624</a>                         writer.write(<span class="jxr_string">"Project(\&quot;{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\&quot;) = \&quot;Lucene.Net\&quot;, \&quot;..&#92;&#92;..&#92;&#92;..&#92;&#92;src&#92;&#92;core&#92;&#92;Lucene.Net.csproj\&quot;, \&quot;{5D4AD9BE-1FFB-41AB-9943-25737971BF57}\&quot;\n"</span>);
-<a class="jxr_linenumber" name="L625" href="#L625">625</a>                         writer.write(<span class="jxr_string">"EndProject\n"</span>);
-<a class="jxr_linenumber" name="L626" href="#L626">626</a>                         writer.write(<span class="jxr_string">"Project(\&quot;{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\&quot;) = \&quot;Contrib.Highlighter\&quot;, \&quot;..&#92;&#92;..&#92;&#92;..&#92;&#92;src&#92;&#92;contrib&#92;&#92;Highlighter&#92;&#92;Contrib.Highlighter.csproj\&quot;, \&quot;{901D5415-383C-4AA6-A256-879558841BEA}\&quot;\n"</span>);
-<a class="jxr_linenumber" name="L627" href="#L627">627</a>                         writer.write(<span class="jxr_string">"EndProject\n"</span>);
-<a class="jxr_linenumber" name="L628" href="#L628">628</a>                         writer.write(<span class="jxr_string">"Global\n"</span>);
-<a class="jxr_linenumber" name="L629" href="#L629">629</a>                         writer.write(<span class="jxr_string">"GlobalSection(SolutionConfigurationPlatforms) = preSolution\n"</span>);
-<a class="jxr_linenumber" name="L630" href="#L630">630</a>                         writer.write(<span class="jxr_string">"Debug|Any CPU = Debug|Any CPU\n"</span>);
-<a class="jxr_linenumber" name="L631" href="#L631">631</a>                         writer.write(<span class="jxr_string">"Release|Any CPU = Release|Any CPU\n"</span>);
-<a class="jxr_linenumber" name="L632" href="#L632">632</a>                         writer.write(<span class="jxr_string">"EndGlobalSection\n"</span>);
-<a class="jxr_linenumber" name="L633" href="#L633">633</a>                         writer.write(<span class="jxr_string">"GlobalSection(ProjectConfigurationPlatforms) = postSolution\n"</span>);
-<a class="jxr_linenumber" name="L634" href="#L634">634</a>                         writer.write(<span class="jxr_string">"{5D4AD9BE-1FFB-41AB-9943-25737971BF57}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n"</span>);
-<a class="jxr_linenumber" name="L635" href="#L635">635</a>                         writer.write(<span class="jxr_string">"{5D4AD9BE-1FFB-41AB-9943-25737971BF57}.Debug|Any CPU.Build.0 = Debug|Any CPU\n"</span>);
-<a class="jxr_linenumber" name="L636" href="#L636">636</a>                         writer.write(<span class="jxr_string">"{5D4AD9BE-1FFB-41AB-9943-25737971BF57}.Release|Any CPU.ActiveCfg = Release|Any CPU\n"</span>);
-<a class="jxr_linenumber" name="L637" href="#L637">637</a>                         writer.write(<span class="jxr_string">"{5D4AD9BE-1FFB-41AB-9943-25737971BF57}.Release|Any CPU.Build.0 = Release|Any CPU\n"</span>);
-<a class="jxr_linenumber" name="L638" href="#L638">638</a>                         writer.write(<span class="jxr_string">"{901D5415-383C-4AA6-A256-879558841BEA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n"</span>);
-<a class="jxr_linenumber" name="L639" href="#L639">639</a>                         writer.write(<span class="jxr_string">"{901D5415-383C-4AA6-A256-879558841BEA}.Debug|Any CPU.Build.0 = Debug|Any CPU\n"</span>);
-<a class="jxr_linenumber" name="L640" href="#L640">640</a>                         writer.write(<span class="jxr_string">"{901D5415-383C-4AA6-A256-879558841BEA}.Release|Any CPU.ActiveCfg = Release|Any CPU\n"</span>);
-<a class="jxr_linenumber" name="L641" href="#L641">641</a>                         writer.write(<span class="jxr_string">"{901D5415-383C-4AA6-A256-879558841BEA}.Release|Any CPU.Build.0 = Release|Any CPU\n"</span>);
-<a class="jxr_linenumber" name="L642" href="#L642">642</a>                         writer.write(<span class="jxr_string">"EndGlobalSection\n"</span>);
-<a class="jxr_linenumber" name="L643" href="#L643">643</a>                         writer.write(<span class="jxr_string">"GlobalSection(SolutionProperties) = preSolution\n"</span>);
-<a class="jxr_linenumber" name="L644" href="#L644">644</a>                         writer.write(<span class="jxr_string">"HideSolutionNode = FALSE\n"</span>);
-<a class="jxr_linenumber" name="L645" href="#L645">645</a>                         writer.write(<span class="jxr_string">"EndGlobalSection\n"</span>);
-<a class="jxr_linenumber" name="L646" href="#L646">646</a>                         writer.write(<span class="jxr_string">"EndGlobal \n"</span>);
-<a class="jxr_linenumber" name="L647" href="#L647">647</a>                     }
-<a class="jxr_linenumber" name="L648" href="#L648">648</a>                 },
-<a class="jxr_linenumber" name="L649" href="#L649">649</a>                 checkLines(firstLine, secondLine, thirdLine, forthLine)
-<a class="jxr_linenumber" name="L650" href="#L650">650</a>                );
-<a class="jxr_linenumber" name="L651" href="#L651">651</a>     }
-<a class="jxr_linenumber" name="L652" href="#L652">652</a>     
-<a class="jxr_linenumber" name="L653" href="#L653">653</a>     @Test
-<a class="jxr_linenumber" name="L654" href="#L654">654</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> addLicenseMarkdown() <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="L655" href="#L655">655</a>         String filename = <span class="jxr_string">"tmp.md"</span>;
-<a class="jxr_linenumber" name="L656" href="#L656">656</a> 
-<a class="jxr_linenumber" name="L657" href="#L657">657</a>         commonTestTemplate(filename, <strong class="jxr_keyword">new</strong> FileCreator() {
-<a class="jxr_linenumber" name="L658" href="#L658">658</a>                     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> createFile(Writer writer)
-<a class="jxr_linenumber" name="L659" href="#L659">659</a>                             <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="L660" href="#L660">660</a>                         writer.write(<span class="jxr_string">"## This is the first header\n"</span>);
-<a class="jxr_linenumber" name="L661" href="#L661">661</a>                         writer.write(<span class="jxr_string">" * this is a list entry\n"</span>);
-<a class="jxr_linenumber" name="L662" href="#L662">662</a>                         writer.write(<span class="jxr_string">" * this is another list entry\n"</span>);
-<a class="jxr_linenumber" name="L663" href="#L663">663</a>                         writer.write(<span class="jxr_string">" &lt;!-- this is a comment line --&gt;"</span>);
-<a class="jxr_linenumber" name="L664" href="#L664">664</a>                         writer.write(<span class="jxr_string">"## This is the second header\n"</span>);
-<a class="jxr_linenumber" name="L665" href="#L665">665</a>                     }
-<a class="jxr_linenumber" name="L666" href="#L666">666</a>                 },
-<a class="jxr_linenumber" name="L667" href="#L667">667</a>                 <strong class="jxr_keyword">new</strong> NewFileReader() {
-<a class="jxr_linenumber" name="L668" href="#L668">668</a>                     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> readFile(BufferedReader r) <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="L669" href="#L669">669</a>                         String line = r.readLine();
-<a class="jxr_linenumber" name="L670" href="#L670">670</a>                         assertEquals(
-<a class="jxr_linenumber" name="L671" href="#L671">671</a>                                 <span class="jxr_string">"&lt;!--"</span>, line, <span class="jxr_string">"First line is incorrect"</span>);
-<a class="jxr_linenumber" name="L672" href="#L672">672</a>                         line = r.readLine();
-<a class="jxr_linenumber" name="L673" href="#L673">673</a>                     }
-<a class="jxr_linenumber" name="L674" href="#L674">674</a>                 });
-<a class="jxr_linenumber" name="L675" href="#L675">675</a>     }
-<a class="jxr_linenumber" name="L676" href="#L676">676</a> }
+<a class="jxr_linenumber" name="L33" href="#L33">33</a>  <strong class="jxr_keyword">import</strong> org.apache.rat.utils.DefaultLog;
+<a class="jxr_linenumber" name="L34" href="#L34">34</a>  <strong class="jxr_keyword">import</strong> org.junit.jupiter.api.Test;
+<a class="jxr_linenumber" name="L35" href="#L35">35</a>  <strong class="jxr_keyword">import</strong> org.junit.jupiter.api.io.TempDir;
+<a class="jxr_linenumber" name="L36" href="#L36">36</a>  
+<a class="jxr_linenumber" name="L37" href="#L37">37</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a name="TestLicenseAppender" href="../../../../org/apache/rat/annotation/TestLicenseAppender.html#TestLicenseAppender">TestLicenseAppender</a> {
+<a class="jxr_linenumber" name="L38" href="#L38">38</a>      
+<a class="jxr_linenumber" name="L39" href="#L39">39</a>  	@TempDir
+<a class="jxr_linenumber" name="L40" href="#L40">40</a>      <strong class="jxr_keyword">private</strong> File baseTempFolder;
+<a class="jxr_linenumber" name="L41" href="#L41">41</a>    
+<a class="jxr_linenumber" name="L42" href="#L42">42</a>  
+<a class="jxr_linenumber" name="L43" href="#L43">43</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String FIRST_LICENSE_LINE = <span class="jxr_string">" Licensed to the Apache Software Foundation (ASF) under one"</span>;
+<a class="jxr_linenumber" name="L44" href="#L44">44</a>  
+<a class="jxr_linenumber" name="L45" href="#L45">45</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">interface</strong> FileCreator {
+<a class="jxr_linenumber" name="L46" href="#L46">46</a>          <strong class="jxr_keyword">void</strong> createFile(Writer w) <strong class="jxr_keyword">throws</strong> IOException;
+<a class="jxr_linenumber" name="L47" href="#L47">47</a>      }
+<a class="jxr_linenumber" name="L48" href="#L48">48</a>  
+<a class="jxr_linenumber" name="L49" href="#L49">49</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">interface</strong> NewFileReader {
+<a class="jxr_linenumber" name="L50" href="#L50">50</a>          <strong class="jxr_keyword">void</strong> readFile(BufferedReader r) <strong class="jxr_keyword">throws</strong> IOException;
+<a class="jxr_linenumber" name="L51" href="#L51">51</a>      }
+<a class="jxr_linenumber" name="L52" href="#L52">52</a>  
+<a class="jxr_linenumber" name="L53" href="#L53">53</a>      <strong class="jxr_keyword">private</strong> String getTemporaryFileWithName(String fileName) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="L54" href="#L54">54</a>          <strong class="jxr_keyword">if</strong> (fileName != <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="L55" href="#L55">55</a>              <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> File(baseTempFolder,fileName).getAbsolutePath();
+<a class="jxr_linenumber" name="L56" href="#L56">56</a>          }
+<a class="jxr_linenumber" name="L57" href="#L57">57</a>          <strong class="jxr_keyword">return</strong> File.createTempFile(<span class="jxr_string">"tla"</span>, <strong class="jxr_keyword">null</strong>, baseTempFolder).getAbsolutePath();
+<a class="jxr_linenumber" name="L58" href="#L58">58</a>      }
+<a class="jxr_linenumber" name="L59" href="#L59">59</a>  
+<a class="jxr_linenumber" name="L60" href="#L60">60</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> createTestFile(String fileName,
+<a class="jxr_linenumber" name="L61" href="#L61">61</a>                                         FileCreator creator)
+<a class="jxr_linenumber" name="L62" href="#L62">62</a>              <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="L63" href="#L63">63</a>          <strong class="jxr_keyword">try</strong> (FileWriter w = <strong class="jxr_keyword">new</strong> FileWriter(fileName)) {
+<a class="jxr_linenumber" name="L64" href="#L64">64</a>              creator.createFile(w);
+<a class="jxr_linenumber" name="L65" href="#L65">65</a>          }
+<a class="jxr_linenumber" name="L66" href="#L66">66</a>      }
+<a class="jxr_linenumber" name="L67" href="#L67">67</a>  
+<a class="jxr_linenumber" name="L68" href="#L68">68</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> commonTestTemplate(String relativeName,
+<a class="jxr_linenumber" name="L69" href="#L69">69</a>                                             FileCreator creator,
+<a class="jxr_linenumber" name="L70" href="#L70">70</a>                                             NewFileReader reader)
+<a class="jxr_linenumber" name="L71" href="#L71">71</a>              <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="L72" href="#L72">72</a>          String name = getTemporaryFileWithName(relativeName);
+<a class="jxr_linenumber" name="L73" href="#L73">73</a>    
+<a class="jxr_linenumber" name="L74" href="#L74">74</a>              createTestFile(name, creator);
+<a class="jxr_linenumber" name="L75" href="#L75">75</a>  
+<a class="jxr_linenumber" name="L76" href="#L76">76</a>              ApacheV2LicenseAppender appender =
+<a class="jxr_linenumber" name="L77" href="#L77">77</a>                      <strong class="jxr_keyword">new</strong> ApacheV2LicenseAppender(DefaultLog.INSTANCE);
+<a class="jxr_linenumber" name="L78" href="#L78">78</a>              appender.append(<strong class="jxr_keyword">new</strong> File(name));
+<a class="jxr_linenumber" name="L79" href="#L79">79</a>  
+<a class="jxr_linenumber" name="L80" href="#L80">80</a>              <strong class="jxr_keyword">try</strong> (BufferedReader r = <strong class="jxr_keyword">new</strong> BufferedReader(<strong class="jxr_keyword">new</strong> FileReader(name + <span class="jxr_string">".new"</span>))){
+<a class="jxr_linenumber" name="L81" href="#L81">81</a>                  reader.readFile(r);
+<a class="jxr_linenumber" name="L82" href="#L82">82</a>              }
+<a class="jxr_linenumber" name="L83" href="#L83">83</a>            FileUtils.delete( <strong class="jxr_keyword">new</strong> File(name+<span class="jxr_string">".new"</span>));
+<a class="jxr_linenumber" name="L84" href="#L84">84</a>            FileUtils.delete( <strong class="jxr_keyword">new</strong> File(name));
+<a class="jxr_linenumber" name="L85" href="#L85">85</a>      }
+<a class="jxr_linenumber" name="L86" href="#L86">86</a>  
+<a class="jxr_linenumber" name="L87" href="#L87">87</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> NewFileReader checkLines(<strong class="jxr_keyword">final</strong> String ... lines) {
+<a class="jxr_linenumber" name="L88" href="#L88">88</a>          <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> NewFileReader() {
+<a class="jxr_linenumber" name="L89" href="#L89">89</a>              <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> readFile(BufferedReader r) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="L90" href="#L90">90</a>                  <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i=0; i&lt;lines.length; i++) {
+<a class="jxr_linenumber" name="L91" href="#L91">91</a>                      String line = r.readLine();
+<a class="jxr_linenumber" name="L92" href="#L92">92</a>                      assertEquals(lines[i], line, String.format(<span class="jxr_string">"Line %s is incorrect"</span>,i));
+<a class="jxr_linenumber" name="L93" href="#L93">93</a>                  }
+<a class="jxr_linenumber" name="L94" href="#L94">94</a>              }
+<a class="jxr_linenumber" name="L95" href="#L95">95</a>          };
+<a class="jxr_linenumber" name="L96" href="#L96">96</a>      }
+<a class="jxr_linenumber" name="L97" href="#L97">97</a>  
+<a class="jxr_linenumber" name="L98" href="#L98">98</a>      @Test
+<a class="jxr_linenumber" name="L99" href="#L99">99</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> addLicenseToUnknownFile() <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="L100" href="#L100">100</a>         String filename = getTemporaryFileWithName(<strong class="jxr_keyword">null</strong>);
+<a class="jxr_linenumber" name="L101" href="#L101">101</a>         createTestFile(filename, <strong class="jxr_keyword">new</strong> FileCreator() {
+<a class="jxr_linenumber" name="L102" href="#L102">102</a>             <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> createFile(Writer writer)
+<a class="jxr_linenumber" name="L103" href="#L103">103</a>                     <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="L104" href="#L104">104</a>                 writer.write(<span class="jxr_string">"Unknown file type\n"</span>);
+<a class="jxr_linenumber" name="L105" href="#L105">105</a>             }
+<a class="jxr_linenumber" name="L106" href="#L106">106</a>         });
+<a class="jxr_linenumber" name="L107" href="#L107">107</a> 
+<a class="jxr_linenumber" name="L108" href="#L108">108</a>         File file = <strong class="jxr_keyword">new</strong> File(filename);
+<a class="jxr_linenumber" name="L109" href="#L109">109</a>         file.deleteOnExit();
+<a class="jxr_linenumber" name="L110" href="#L110">110</a>         ApacheV2LicenseAppender appender =
+<a class="jxr_linenumber" name="L111" href="#L111">111</a>                 <strong class="jxr_keyword">new</strong> ApacheV2LicenseAppender(DefaultLog.INSTANCE);
+<a class="jxr_linenumber" name="L112" href="#L112">112</a>         appender.append(file);
+<a class="jxr_linenumber" name="L113" href="#L113">113</a> 
+<a class="jxr_linenumber" name="L114" href="#L114">114</a>         File newFile = <strong class="jxr_keyword">new</strong> File(filename + <span class="jxr_string">".new"</span>);
+<a class="jxr_linenumber" name="L115" href="#L115">115</a>         newFile.deleteOnExit();
+<a class="jxr_linenumber" name="L116" href="#L116">116</a>         assertFalse(newFile.exists(), <span class="jxr_string">"No new file should have been written"</span>);
+<a class="jxr_linenumber" name="L117" href="#L117">117</a>     }
+<a class="jxr_linenumber" name="L118" href="#L118">118</a> 
+<a class="jxr_linenumber" name="L119" href="#L119">119</a>     @Test
+<a class="jxr_linenumber" name="L120" href="#L120">120</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> addLicenseToJava() <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="L121" href="#L121">121</a>         String filename = <span class="jxr_string">"tmp.java"</span>;
+<a class="jxr_linenumber" name="L122" href="#L122">122</a>         <strong class="jxr_keyword">final</strong> String firstLine = <span class="jxr_string">"package foo;"</span>;
+<a class="jxr_linenumber" name="L123" href="#L123">123</a>         <strong class="jxr_keyword">final</strong> String secondLine = <span class="jxr_string">""</span>;
+<a class="jxr_linenumber" name="L124" href="#L124">124</a>         <strong class="jxr_keyword">final</strong> String thirdLine = <span class="jxr_string">"/*"</span>;
+<a class="jxr_linenumber" name="L125" href="#L125">125</a>         commonTestTemplate(filename, <strong class="jxr_keyword">new</strong> FileCreator() {
+<a class="jxr_linenumber" name="L126" href="#L126">126</a>                     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> createFile(Writer writer)
+<a class="jxr_linenumber" name="L127" href="#L127">127</a>                             <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="L128" href="#L128">128</a>                         writer.write(firstLine + <span class="jxr_string">"\n"</span>);
+<a class="jxr_linenumber" name="L129" href="#L129">129</a>                         writer.write(<span class="jxr_string">"\n"</span>);
+<a class="jxr_linenumber" name="L130" href="#L130">130</a>                         writer.write(<span class="jxr_string">"public class test {\n"</span>);
+<a class="jxr_linenumber" name="L131" href="#L131">131</a>                         writer.write(<span class="jxr_string">"}\n"</span>);
+<a class="jxr_linenumber" name="L132" href="#L132">132</a>                     }
+<a class="jxr_linenumber" name="L133" href="#L133">133</a>                 },
+<a class="jxr_linenumber" name="L134" href="#L134">134</a>                 checkLines(firstLine, secondLine, thirdLine));
+<a class="jxr_linenumber" name="L135" href="#L135">135</a>     }
+<a class="jxr_linenumber" name="L136" href="#L136">136</a> 
+<a class="jxr_linenumber" name="L137" href="#L137">137</a>     @Test
+<a class="jxr_linenumber" name="L138" href="#L138">138</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> addLicenseToJavaWithoutPackage() <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="L139" href="#L139">139</a>         String filename = <span class="jxr_string">"tmp.java"</span>;
+<a class="jxr_linenumber" name="L140" href="#L140">140</a>         String commentLine = <span class="jxr_string">"/*"</span>;
+<a class="jxr_linenumber" name="L141" href="#L141">141</a>         commonTestTemplate(filename, <strong class="jxr_keyword">new</strong> FileCreator() {
+<a class="jxr_linenumber" name="L142" href="#L142">142</a>                     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> createFile(Writer writer)
+<a class="jxr_linenumber" name="L143" href="#L143">143</a>                             <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="L144" href="#L144">144</a>                         writer.write(<span class="jxr_string">"public class test {\n"</span>);
+<a class="jxr_linenumber" name="L145" href="#L145">145</a>                         writer.write(<span class="jxr_string">"}\n"</span>);
+<a class="jxr_linenumber" name="L146" href="#L146">146</a>                     }
+<a class="jxr_linenumber" name="L147" href="#L147">147</a>                 },
+<a class="jxr_linenumber" name="L148" href="#L148">148</a>                 checkLines(commentLine));
+<a class="jxr_linenumber" name="L149" href="#L149">149</a>     }
+<a class="jxr_linenumber" name="L150" href="#L150">150</a> 
+<a class="jxr_linenumber" name="L151" href="#L151">151</a>     @Test
+<a class="jxr_linenumber" name="L152" href="#L152">152</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> addLicenseToXML() <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="L153" href="#L153">153</a>         String filename = <span class="jxr_string">"tmp.xml"</span>;
+<a class="jxr_linenumber" name="L154" href="#L154">154</a>         <strong class="jxr_keyword">final</strong> String firstLine = <span class="jxr_string">"&lt;?xml version='1.0'?&gt;"</span>;
+<a class="jxr_linenumber" name="L155" href="#L155">155</a>         <strong class="jxr_keyword">final</strong> String secondLine = <span class="jxr_string">""</span>;
+<a class="jxr_linenumber" name="L156" href="#L156">156</a>         <strong class="jxr_keyword">final</strong> String thirdLine = <span class="jxr_string">"&lt;!--"</span>;
+<a class="jxr_linenumber" name="L157" href="#L157">157</a> 
+<a class="jxr_linenumber" name="L158" href="#L158">158</a>         commonTestTemplate(filename, <strong class="jxr_keyword">new</strong> FileCreator() {
+<a class="jxr_linenumber" name="L159" href="#L159">159</a>                     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> createFile(Writer writer)
+<a class="jxr_linenumber" name="L160" href="#L160">160</a>                             <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="L161" href="#L161">161</a>                         writer.write(firstLine + <span class="jxr_string">"\n"</span>);
+<a class="jxr_linenumber" name="L162" href="#L162">162</a>                         writer.write(<span class="jxr_string">"\n"</span>);
+<a class="jxr_linenumber" name="L163" href="#L163">163</a>                         writer.write(<span class="jxr_string">"&lt;xml&gt;\n"</span>);
+<a class="jxr_linenumber" name="L164" href="#L164">164</a>                         writer.write(<span class="jxr_string">"&lt;/xml&gt;\n"</span>);
+<a class="jxr_linenumber" name="L165" href="#L165">165</a>                     }
+<a class="jxr_linenumber" name="L166" href="#L166">166</a>                 },
+<a class="jxr_linenumber" name="L167" href="#L167">167</a>                 checkLines(firstLine, secondLine, thirdLine));
+<a class="jxr_linenumber" name="L168" href="#L168">168</a>     }
+<a class="jxr_linenumber" name="L169" href="#L169">169</a> 
+<a class="jxr_linenumber" name="L170" href="#L170">170</a>     @Test
+<a class="jxr_linenumber" name="L171" href="#L171">171</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> addLicenseToXMLWithoutDecl() <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="L172" href="#L172">172</a>         String filename = <span class="jxr_string">"tmp.xml"</span>;
+<a class="jxr_linenumber" name="L173" href="#L173">173</a>         <strong class="jxr_keyword">final</strong> String firstLine = <span class="jxr_string">"&lt;?xml version='1.0'?&gt;"</span>;
+<a class="jxr_linenumber" name="L174" href="#L174">174</a>         <strong class="jxr_keyword">final</strong> String secondLine = <span class="jxr_string">"&lt;!--"</span>;
+<a class="jxr_linenumber" name="L175" href="#L175">175</a> 
+<a class="jxr_linenumber" name="L176" href="#L176">176</a>         commonTestTemplate(filename, <strong class="jxr_keyword">new</strong> FileCreator() {
+<a class="jxr_linenumber" name="L177" href="#L177">177</a>                     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> createFile(Writer writer)
+<a class="jxr_linenumber" name="L178" href="#L178">178</a>                             <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="L179" href="#L179">179</a>                         writer.write(<span class="jxr_string">"&lt;xml&gt;\n"</span>);
+<a class="jxr_linenumber" name="L180" href="#L180">180</a>                         writer.write(<span class="jxr_string">"&lt;/xml&gt;\n"</span>);
+<a class="jxr_linenumber" name="L181" href="#L181">181</a>                     }
+<a class="jxr_linenumber" name="L182" href="#L182">182</a>                 },
+<a class="jxr_linenumber" name="L183" href="#L183">183</a>                 checkLines(firstLine, secondLine));
+<a class="jxr_linenumber" name="L184" href="#L184">184</a>     }
+<a class="jxr_linenumber" name="L185" href="#L185">185</a> 
+<a class="jxr_linenumber" name="L186" href="#L186">186</a>     @Test
+<a class="jxr_linenumber" name="L187" href="#L187">187</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> addLicenseToHTML() <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="L188" href="#L188">188</a>         String filename = <span class="jxr_string">"tmp.html"</span>;
+<a class="jxr_linenumber" name="L189" href="#L189">189</a>         String commentLine = <span class="jxr_string">"&lt;!--"</span>;
+<a class="jxr_linenumber" name="L190" href="#L190">190</a> 
+<a class="jxr_linenumber" name="L191" href="#L191">191</a>         commonTestTemplate(filename, <strong class="jxr_keyword">new</strong> FileCreator() {
+<a class="jxr_linenumber" name="L192" href="#L192">192</a>                     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> createFile(Writer writer)
+<a class="jxr_linenumber" name="L193" href="#L193">193</a>                             <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="L194" href="#L194">194</a>                         writer.write(<span class="jxr_string">"&lt;html&gt;\n"</span>);
+<a class="jxr_linenumber" name="L195" href="#L195">195</a>                         writer.write(<span class="jxr_string">"\n"</span>);
+<a class="jxr_linenumber" name="L196" href="#L196">196</a>                         writer.write(<span class="jxr_string">"&lt;/html&gt;\n"</span>);
+<a class="jxr_linenumber" name="L197" href="#L197">197</a>                     }
+<a class="jxr_linenumber" name="L198" href="#L198">198</a>                 },
+<a class="jxr_linenumber" name="L199" href="#L199">199</a>                 checkLines(commentLine));
+<a class="jxr_linenumber" name="L200" href="#L200">200</a>     }
+<a class="jxr_linenumber" name="L201" href="#L201">201</a> 
+<a class="jxr_linenumber" name="L202" href="#L202">202</a>     @Test
+<a class="jxr_linenumber" name="L203" href="#L203">203</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> addLicenseToCSS() <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="L204" href="#L204">204</a>         String filename = <span class="jxr_string">"tmp.css"</span>;
+<a class="jxr_linenumber" name="L205" href="#L205">205</a>         String firstLine = <span class="jxr_string">"/*"</span>;
+<a class="jxr_linenumber" name="L206" href="#L206">206</a> 
+<a class="jxr_linenumber" name="L207" href="#L207">207</a>         commonTestTemplate(filename, <strong class="jxr_keyword">new</strong> FileCreator() {
+<a class="jxr_linenumber" name="L208" href="#L208">208</a>                     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> createFile(Writer writer)
+<a class="jxr_linenumber" name="L209" href="#L209">209</a>                             <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="L210" href="#L210">210</a>                         writer.write(<span class="jxr_string">".class {\n"</span>);
+<a class="jxr_linenumber" name="L211" href="#L211">211</a>                         writer.write(<span class="jxr_string">" background-color: red;"</span>);
+<a class="jxr_linenumber" name="L212" href="#L212">212</a>                         writer.write(<span class="jxr_string">"}\n"</span>);
+<a class="jxr_linenumber" name="L213" href="#L213">213</a>                     }
+<a class="jxr_linenumber" name="L214" href="#L214">214</a>                 },
+<a class="jxr_linenumber" name="L215" href="#L215">215</a>                 checkLines(firstLine));
+<a class="jxr_linenumber" name="L216" href="#L216">216</a>     }
+<a class="jxr_linenumber" name="L217" href="#L217">217</a> 
+<a class="jxr_linenumber" name="L218" href="#L218">218</a>     @Test
+<a class="jxr_linenumber" name="L219" href="#L219">219</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> addLicenseToJavascript() <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="L220" href="#L220">220</a>         String filename = <span class="jxr_string">"tmp.js"</span>;
+<a class="jxr_linenumber" name="L221" href="#L221">221</a>         String firstLine = <span class="jxr_string">"/*"</span>;
+<a class="jxr_linenumber" name="L222" href="#L222">222</a> 
+<a class="jxr_linenumber" name="L223" href="#L223">223</a>         commonTestTemplate(filename, <strong class="jxr_keyword">new</strong> FileCreator() {
+<a class="jxr_linenumber" name="L224" href="#L224">224</a>                     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> createFile(Writer writer)
+<a class="jxr_linenumber" name="L225" href="#L225">225</a>                             <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="L226" href="#L226">226</a>                         writer.write(<span class="jxr_string">"if (a ==b) {&gt;\n"</span>);
+<a class="jxr_linenumber" name="L227" href="#L227">227</a>                         writer.write(<span class="jxr_string">" alert(\&quot;how useful!\&quot;);"</span>);
+<a class="jxr_linenumber" name="L228" href="#L228">228</a>                         writer.write(<span class="jxr_string">"}\n"</span>);
+<a class="jxr_linenumber" name="L229" href="#L229">229</a>                     }
+<a class="jxr_linenumber" name="L230" href="#L230">230</a>                 },
+<a class="jxr_linenumber" name="L231" href="#L231">231</a>                 checkLines(firstLine));
+<a class="jxr_linenumber" name="L232" href="#L232">232</a>     }
+<a class="jxr_linenumber" name="L233" href="#L233">233</a> 
+<a class="jxr_linenumber" name="L234" href="#L234">234</a>     @Test
+<a class="jxr_linenumber" name="L235" href="#L235">235</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> addLicenseToAPT() <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="L236" href="#L236">236</a>         String filename = <span class="jxr_string">"tmp.apt"</span>;
+<a class="jxr_linenumber" name="L237" href="#L237">237</a>         String firstLine = <span class="jxr_string">"~~"</span> + FIRST_LICENSE_LINE;
+<a class="jxr_linenumber" name="L238" href="#L238">238</a> 
+<a class="jxr_linenumber" name="L239" href="#L239">239</a>         commonTestTemplate(filename, <strong class="jxr_keyword">new</strong> FileCreator() {
+<a class="jxr_linenumber" name="L240" href="#L240">240</a>                     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> createFile(Writer writer)
+<a class="jxr_linenumber" name="L241" href="#L241">241</a>                             <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="L242" href="#L242">242</a>                         writer.write(<span class="jxr_string">"A Simple APT file"</span>);
+<a class="jxr_linenumber" name="L243" href="#L243">243</a>                         writer.write(<span class="jxr_string">" This file contains nothing\n"</span>);
+<a class="jxr_linenumber" name="L244" href="#L244">244</a>                         writer.write(<span class="jxr_string">" of any importance\n"</span>);
+<a class="jxr_linenumber" name="L245" href="#L245">245</a>                     }
+<a class="jxr_linenumber" name="L246" href="#L246">246</a>                 },
+<a class="jxr_linenumber" name="L247" href="#L247">247</a>                 checkLines(firstLine));
+<a class="jxr_linenumber" name="L248" href="#L248">248</a>     }
+<a class="jxr_linenumber" name="L249" href="#L249">249</a> 
+<a class="jxr_linenumber" name="L250" href="#L250">250</a>     @Test
+<a class="jxr_linenumber" name="L251" href="#L251">251</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> addLicenseToProperties() <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="L252" href="#L252">252</a>         String filename = <span class="jxr_string">"tmp.properties"</span>;
+<a class="jxr_linenumber" name="L253" href="#L253">253</a>         String firstLine = <span class="jxr_string">"#"</span> + FIRST_LICENSE_LINE;
+<a class="jxr_linenumber" name="L254" href="#L254">254</a> 
+<a class="jxr_linenumber" name="L255" href="#L255">255</a>         commonTestTemplate(filename, <strong class="jxr_keyword">new</strong> FileCreator() {
+<a class="jxr_linenumber" name="L256" href="#L256">256</a>                     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> createFile(Writer writer)
+<a class="jxr_linenumber" name="L257" href="#L257">257</a>                             <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="L258" href="#L258">258</a>                         writer.write(<span class="jxr_string">"property = value\n"</span>);
+<a class="jxr_linenumber" name="L259" href="#L259">259</a>                         writer.write(<span class="jxr_string">"fun = true\n"</span>);
+<a class="jxr_linenumber" name="L260" href="#L260">260</a>                         writer.write(<span class="jxr_string">"cool = true\n"</span>);
+<a class="jxr_linenumber" name="L261" href="#L261">261</a>                     }
+<a class="jxr_linenumber" name="L262" href="#L262">262</a>                 },
+<a class="jxr_linenumber" name="L263" href="#L263">263</a>                 checkLines(firstLine));
+<a class="jxr_linenumber" name="L264" href="#L264">264</a>     }
+<a class="jxr_linenumber" name="L265" href="#L265">265</a> 
+<a class="jxr_linenumber" name="L266" href="#L266">266</a>     @Test
+<a class="jxr_linenumber" name="L267" href="#L267">267</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> addLicenseToScala() <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="L268" href="#L268">268</a>         String filename = <span class="jxr_string">"tmp.scala"</span>;
+<a class="jxr_linenumber" name="L269" href="#L269">269</a>         <strong class="jxr_keyword">final</strong> String firstLine = <span class="jxr_string">"package foo {"</span>;
+<a class="jxr_linenumber" name="L270" href="#L270">270</a>         <strong class="jxr_keyword">final</strong> String newFirstLine = <span class="jxr_string">"/*"</span>;
+<a class="jxr_linenumber" name="L271" href="#L271">271</a> 
+<a class="jxr_linenumber" name="L272" href="#L272">272</a>         commonTestTemplate(filename, <strong class="jxr_keyword">new</strong> FileCreator() {
+<a class="jxr_linenumber" name="L273" href="#L273">273</a>                     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> createFile(Writer writer)
+<a class="jxr_linenumber" name="L274" href="#L274">274</a>                             <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="L275" href="#L275">275</a>                         writer.write(firstLine + <span class="jxr_string">"\n"</span>);
+<a class="jxr_linenumber" name="L276" href="#L276">276</a>                         writer.write(<span class="jxr_string">"\n"</span>);
+<a class="jxr_linenumber" name="L277" href="#L277">277</a>                         writer.write(<span class="jxr_string">"    object X { val x = 1; }\n"</span>);
+<a class="jxr_linenumber" name="L278" href="#L278">278</a>                         writer.write(<span class="jxr_string">"}\n"</span>);
+<a class="jxr_linenumber" name="L279" href="#L279">279</a>                     }
+<a class="jxr_linenumber" name="L280" href="#L280">280</a>                 },
+<a class="jxr_linenumber" name="L281" href="#L281">281</a>                 <strong class="jxr_keyword">new</strong> NewFileReader() {
+<a class="jxr_linenumber" name="L282" href="#L282">282</a>                     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> readFile(BufferedReader reader)
+<a class="jxr_linenumber" name="L283" href="#L283">283</a>                             <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="L284" href="#L284">284</a>                         String line = reader.readLine();
+<a class="jxr_linenumber" name="L285" href="#L285">285</a>                         assertEquals(
+<a class="jxr_linenumber" name="L286" href="#L286">286</a>                                 newFirstLine, line, <span class="jxr_string">"First line is incorrect"</span>);
+<a class="jxr_linenumber" name="L287" href="#L287">287</a>                         <strong class="jxr_keyword">while</strong> ((line = reader.readLine()) != <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="L288" href="#L288">288</a>                             <strong class="jxr_keyword">if</strong> (line.length() == 0) {
+<a class="jxr_linenumber" name="L289" href="#L289">289</a>                                 line = reader.readLine();
+<a class="jxr_linenumber" name="L290" href="#L290">290</a>                                 <strong class="jxr_keyword">break</strong>;
+<a class="jxr_linenumber" name="L291" href="#L291">291</a>                             }
+<a class="jxr_linenumber" name="L292" href="#L292">292</a>                         }
+<a class="jxr_linenumber" name="L293" href="#L293">293</a>                         assertEquals(
+<a class="jxr_linenumber" name="L294" href="#L294">294</a>                                 firstLine, line, <span class="jxr_string">"Package line is incorrect"</span>);
+<a class="jxr_linenumber" name="L295" href="#L295">295</a>                     }
+<a class="jxr_linenumber" name="L296" href="#L296">296</a>                 });
+<a class="jxr_linenumber" name="L297" href="#L297">297</a>     }
+<a class="jxr_linenumber" name="L298" href="#L298">298</a> 
+<a class="jxr_linenumber" name="L299" href="#L299">299</a>     @Test
+<a class="jxr_linenumber" name="L300" href="#L300">300</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> addLicenseToRubyWithoutHashBang()
+<a class="jxr_linenumber" name="L301" href="#L301">301</a>             <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="L302" href="#L302">302</a>         String filename = <span class="jxr_string">"tmp.rb"</span>;
+<a class="jxr_linenumber" name="L303" href="#L303">303</a>         String firstLine = <span class="jxr_string">"#"</span> + FIRST_LICENSE_LINE;
+<a class="jxr_linenumber" name="L304" href="#L304">304</a> 
+<a class="jxr_linenumber" name="L305" href="#L305">305</a>         commonTestTemplate(filename, <strong class="jxr_keyword">new</strong> FileCreator() {
+<a class="jxr_linenumber" name="L306" href="#L306">306</a>                     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> createFile(Writer writer)
+<a class="jxr_linenumber" name="L307" href="#L307">307</a>                             <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="L308" href="#L308">308</a>                         writer.write(<span class="jxr_string">"class Foo\n"</span>);
+<a class="jxr_linenumber" name="L309" href="#L309">309</a>                         writer.write(<span class="jxr_string">"end\n"</span>);
+<a class="jxr_linenumber" name="L310" href="#L310">310</a>                     }
+<a class="jxr_linenumber" name="L311" href="#L311">311</a>                 },
+<a class="jxr_linenumber" name="L312" href="#L312">312</a>                 checkLines(firstLine));
+<a class="jxr_linenumber" name="L313" href="#L313">313</a>     }
+<a class="jxr_linenumber" name="L314" href="#L314">314</a> 
+<a class="jxr_linenumber" name="L315" href="#L315">315</a>     @Test
+<a class="jxr_linenumber" name="L316" href="#L316">316</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> addLicenseToRubyWithHashBang() <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="L317" href="#L317">317</a>         String filename = <span class="jxr_string">"tmp.rb"</span>;
+<a class="jxr_linenumber" name="L318" href="#L318">318</a>         <strong class="jxr_keyword">final</strong> String firstLine = <span class="jxr_string">"#!/usr/bin/env ruby"</span>;
+<a class="jxr_linenumber" name="L319" href="#L319">319</a>         String secondLine = <span class="jxr_string">"#"</span> + FIRST_LICENSE_LINE;
+<a class="jxr_linenumber" name="L320" href="#L320">320</a> 
+<a class="jxr_linenumber" name="L321" href="#L321">321</a>         commonTestTemplate(filename, <strong class="jxr_keyword">new</strong> FileCreator() {
+<a class="jxr_linenumber" name="L322" href="#L322">322</a>                     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> createFile(Writer writer)
+<a class="jxr_linenumber" name="L323" href="#L323">323</a>                             <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="L324" href="#L324">324</a>                         writer.write(firstLine + <span class="jxr_string">"\n"</span>);
+<a class="jxr_linenumber" name="L325" href="#L325">325</a>                         writer.write(<span class="jxr_string">"class Foo\n"</span>);
+<a class="jxr_linenumber" name="L326" href="#L326">326</a>                         writer.write(<span class="jxr_string">"end\n"</span>);
+<a class="jxr_linenumber" name="L327" href="#L327">327</a>                     }
+<a class="jxr_linenumber" name="L328" href="#L328">328</a>                 },
+<a class="jxr_linenumber" name="L329" href="#L329">329</a>                 checkLines(firstLine, secondLine));
+<a class="jxr_linenumber" name="L330" href="#L330">330</a>     }
+<a class="jxr_linenumber" name="L331" href="#L331">331</a> 
+<a class="jxr_linenumber" name="L332" href="#L332">332</a>     @Test
+<a class="jxr_linenumber" name="L333" href="#L333">333</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> addLicenseToPerlWithoutHashBang()
+<a class="jxr_linenumber" name="L334" href="#L334">334</a>             <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="L335" href="#L335">335</a>         String filename = <span class="jxr_string">"tmp.pl"</span>;
+<a class="jxr_linenumber" name="L336" href="#L336">336</a>         String firstLine = <span class="jxr_string">"#"</span> + FIRST_LICENSE_LINE;
+<a class="jxr_linenumber" name="L337" href="#L337">337</a> 
+<a class="jxr_linenumber" name="L338" href="#L338">338</a>         commonTestTemplate(filename, <strong class="jxr_keyword">new</strong> FileCreator() {
+<a class="jxr_linenumber" name="L339" href="#L339">339</a>                     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> createFile(Writer writer)
+<a class="jxr_linenumber" name="L340" href="#L340">340</a>                             <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="L341" href="#L341">341</a>                         writer.write(<span class="jxr_string">"print \&quot;Hello world\&quot;\n"</span>);
+<a class="jxr_linenumber" name="L342" href="#L342">342</a>                     }
+<a class="jxr_linenumber" name="L343" href="#L343">343</a>                 },
+<a class="jxr_linenumber" name="L344" href="#L344">344</a>                 checkLines(firstLine));
+<a class="jxr_linenumber" name="L345" href="#L345">345</a>     }
+<a class="jxr_linenumber" name="L346" href="#L346">346</a> 
+<a class="jxr_linenumber" name="L347" href="#L347">347</a>     @Test
+<a class="jxr_linenumber" name="L348" href="#L348">348</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> addLicenseToPerlWithHashBang() <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="L349" href="#L349">349</a>         String filename = <span class="jxr_string">"tmp.pl"</span>;
+<a class="jxr_linenumber" name="L350" href="#L350">350</a>         <strong class="jxr_keyword">final</strong> String firstLine = <span class="jxr_string">"#!/usr/bin/env perl"</span>;
+<a class="jxr_linenumber" name="L351" href="#L351">351</a>         String secondLine = <span class="jxr_string">"#"</span> + FIRST_LICENSE_LINE;
+<a class="jxr_linenumber" name="L352" href="#L352">352</a> 
+<a class="jxr_linenumber" name="L353" href="#L353">353</a>         commonTestTemplate(filename, <strong class="jxr_keyword">new</strong> FileCreator() {
+<a class="jxr_linenumber" name="L354" href="#L354">354</a>                     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> createFile(Writer writer)
+<a class="jxr_linenumber" name="L355" href="#L355">355</a>                             <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="L356" href="#L356">356</a>                         writer.write(firstLine + <span class="jxr_string">"\n"</span>);
+<a class="jxr_linenumber" name="L357" href="#L357">357</a>                         writer.write(<span class="jxr_string">"print \&quot;Hello world\&quot;\n"</span>);
+<a class="jxr_linenumber" name="L358" href="#L358">358</a>                     }
+<a class="jxr_linenumber" name="L359" href="#L359">359</a>                 },
+<a class="jxr_linenumber" name="L360" href="#L360">360</a>                 checkLines(firstLine, secondLine));
+<a class="jxr_linenumber" name="L361" href="#L361">361</a>     }
+<a class="jxr_linenumber" name="L362" href="#L362">362</a> 
+<a class="jxr_linenumber" name="L363" href="#L363">363</a>     @Test
+<a class="jxr_linenumber" name="L364" href="#L364">364</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> addLicenseToPerlModule() <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="L365" href="#L365">365</a>         String filename = <span class="jxr_string">"tmp.pm"</span>;
+<a class="jxr_linenumber" name="L366" href="#L366">366</a>         <strong class="jxr_keyword">final</strong> String firstLine = <span class="jxr_string">"package API::TestAPI;"</span>;
+<a class="jxr_linenumber" name="L367" href="#L367">367</a>         <strong class="jxr_keyword">final</strong> String secondLine = <span class="jxr_string">""</span>; 
+<a class="jxr_linenumber" name="L368" href="#L368">368</a>         <strong class="jxr_keyword">final</strong> String thirdLine = <span class="jxr_string">"#"</span> + FIRST_LICENSE_LINE;
+<a class="jxr_linenumber" name="L369" href="#L369">369</a> 
+<a class="jxr_linenumber" name="L370" href="#L370">370</a>         commonTestTemplate(filename, <strong class="jxr_keyword">new</strong> FileCreator() {
+<a class="jxr_linenumber" name="L371" href="#L371">371</a>                     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> createFile(Writer writer)
+<a class="jxr_linenumber" name="L372" href="#L372">372</a>                             <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="L373" href="#L373">373</a>                         writer.write(firstLine + <span class="jxr_string">"\n"</span>);
+<a class="jxr_linenumber" name="L374" href="#L374">374</a>                         writer.write(<span class="jxr_string">"print \&quot;Hello world\&quot;\n"</span>);
+<a class="jxr_linenumber" name="L375" href="#L375">375</a>                     }
+<a class="jxr_linenumber" name="L376" href="#L376">376</a>                 },
+<a class="jxr_linenumber" name="L377" href="#L377">377</a>                 checkLines(firstLine, secondLine, thirdLine));
+<a class="jxr_linenumber" name="L378" href="#L378">378</a>     }    
+<a class="jxr_linenumber" name="L379" href="#L379">379</a> 
+<a class="jxr_linenumber" name="L380" href="#L380">380</a>     @Test
+<a class="jxr_linenumber" name="L381" href="#L381">381</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> addLicenseToTclWithoutHashBang()
+<a class="jxr_linenumber" name="L382" href="#L382">382</a>             <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="L383" href="#L383">383</a>         String filename = <span class="jxr_string">"tmp.tcl"</span>;
+<a class="jxr_linenumber" name="L384" href="#L384">384</a>         String firstLine = <span class="jxr_string">"#"</span> + FIRST_LICENSE_LINE;
+<a class="jxr_linenumber" name="L385" href="#L385">385</a> 
+<a class="jxr_linenumber" name="L386" href="#L386">386</a>         commonTestTemplate(filename, <strong class="jxr_keyword">new</strong> FileCreator() {
+<a class="jxr_linenumber" name="L387" href="#L387">387</a>                     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> createFile(Writer writer)
+<a class="jxr_linenumber" name="L388" href="#L388">388</a>                             <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="L389" href="#L389">389</a>                         writer.write(<span class="jxr_string">"puts \&quot;Hello world\&quot;\n"</span>);
+<a class="jxr_linenumber" name="L390" href="#L390">390</a>                     }
+<a class="jxr_linenumber" name="L391" href="#L391">391</a>                 },
+<a class="jxr_linenumber" name="L392" href="#L392">392</a>                 checkLines(firstLine));
+<a class="jxr_linenumber" name="L393" href="#L393">393</a>     }
+<a class="jxr_linenumber" name="L394" href="#L394">394</a> 
+<a class="jxr_linenumber" name="L395" href="#L395">395</a>     @Test
+<a class="jxr_linenumber" name="L396" href="#L396">396</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> addLicenseToTclWithHashBang() <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="L397" href="#L397">397</a>         String filename = <span class="jxr_string">"tmp.tcl"</span>;
+<a class="jxr_linenumber" name="L398" href="#L398">398</a>         <strong class="jxr_keyword">final</strong> String firstLine = <span class="jxr_string">"#!/usr/bin/env tcl"</span>;
+<a class="jxr_linenumber" name="L399" href="#L399">399</a>         String secondLine = <span class="jxr_string">"#"</span> + FIRST_LICENSE_LINE;
+<a class="jxr_linenumber" name="L400" href="#L400">400</a> 
+<a class="jxr_linenumber" name="L401" href="#L401">401</a>         commonTestTemplate(filename, <strong class="jxr_keyword">new</strong> FileCreator() {
+<a class="jxr_linenumber" name="L402" href="#L402">402</a>                     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> createFile(Writer writer)
+<a class="jxr_linenumber" name="L403" href="#L403">403</a>                             <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="L404" href="#L404">404</a>                         writer.write(firstLine + <span class="jxr_string">"\n"</span>);
+<a class="jxr_linenumber" name="L405" href="#L405">405</a>                         writer.write(<span class="jxr_string">"puts \&quot;Hello world\&quot;\n"</span>);
+<a class="jxr_linenumber" name="L406" href="#L406">406</a>                     }
+<a class="jxr_linenumber" name="L407" href="#L407">407</a>                 },
+<a class="jxr_linenumber" name="L408" href="#L408">408</a>                 checkLines(firstLine, secondLine));
+<a class="jxr_linenumber" name="L409" href="#L409">409</a>     }
+<a class="jxr_linenumber" name="L410" href="#L410">410</a> 
+<a class="jxr_linenumber" name="L411" href="#L411">411</a>     @Test
+<a class="jxr_linenumber" name="L412" href="#L412">412</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> addLicenseToPHP() <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="L413" href="#L413">413</a>         String filename = <span class="jxr_string">"tmp.php"</span>;
+<a class="jxr_linenumber" name="L414" href="#L414">414</a>         <strong class="jxr_keyword">final</strong> String firstLine = <span class="jxr_string">"&lt;?php"</span>;
+<a class="jxr_linenumber" name="L415" href="#L415">415</a>         <strong class="jxr_keyword">final</strong> String secondLine = <span class="jxr_string">""</span>;
+<a class="jxr_linenumber" name="L416" href="#L416">416</a>         <strong class="jxr_keyword">final</strong> String thirdLine = <span class="jxr_string">"/*"</span>;
+<a class="jxr_linenumber" name="L417" href="#L417">417</a> 
+<a class="jxr_linenumber" name="L418" href="#L418">418</a>         commonTestTemplate(filename, <strong class="jxr_keyword">new</strong> FileCreator() {
+<a class="jxr_linenumber" name="L419" href="#L419">419</a>                     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> createFile(Writer writer)
+<a class="jxr_linenumber" name="L420" href="#L420">420</a>                             <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="L421" href="#L421">421</a>                         writer.write(firstLine + <span class="jxr_string">"\n"</span>);
+<a class="jxr_linenumber" name="L422" href="#L422">422</a>                         writer.write(<span class="jxr_string">"echo 'Hello World'\n"</span>);
+<a class="jxr_linenumber" name="L423" href="#L423">423</a>                         writer.write(<span class="jxr_string">"?&gt;\n"</span>);
+<a class="jxr_linenumber" name="L424" href="#L424">424</a>                     }
+<a class="jxr_linenumber" name="L425" href="#L425">425</a>                 },
+<a class="jxr_linenumber" name="L426" href="#L426">426</a>                 checkLines(firstLine, secondLine, thirdLine));
+<a class="jxr_linenumber" name="L427" href="#L427">427</a>     }
+<a class="jxr_linenumber" name="L428" href="#L428">428</a> 
+<a class="jxr_linenumber" name="L429" href="#L429">429</a>     @Test
+<a class="jxr_linenumber" name="L430" href="#L430">430</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> addLicenseToCSharp() <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="L431" href="#L431">431</a>         String filename = <span class="jxr_string">"tmp.cs"</span>;
+<a class="jxr_linenumber" name="L432" href="#L432">432</a>         String firstLine = <span class="jxr_string">"/*"</span>;
+<a class="jxr_linenumber" name="L433" href="#L433">433</a> 
+<a class="jxr_linenumber" name="L434" href="#L434">434</a>         commonTestTemplate(filename, <strong class="jxr_keyword">new</strong> FileCreator() {
+<a class="jxr_linenumber" name="L435" href="#L435">435</a>                     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> createFile(Writer writer)
+<a class="jxr_linenumber" name="L436" href="#L436">436</a>                             <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="L437" href="#L437">437</a>                         writer.write(<span class="jxr_string">"namespace org.example {\n"</span>);
+<a class="jxr_linenumber" name="L438" href="#L438">438</a>                         writer.write(<span class="jxr_string">"    public class Foo {\n"</span>);
+<a class="jxr_linenumber" name="L439" href="#L439">439</a>                         writer.write(<span class="jxr_string">"    }\n"</span>);
+<a class="jxr_linenumber" name="L440" href="#L440">440</a>                         writer.write(<span class="jxr_string">"}\n"</span>);
+<a class="jxr_linenumber" name="L441" href="#L441">441</a>                     }
+<a class="jxr_linenumber" name="L442" href="#L442">442</a>                 },
+<a class="jxr_linenumber" name="L443" href="#L443">443</a>                 checkLines(firstLine));
+<a class="jxr_linenumber" name="L444" href="#L444">444</a>     }
+<a class="jxr_linenumber" name="L445" href="#L445">445</a> 
+<a class="jxr_linenumber" name="L446" href="#L446">446</a>     @Test
+<a class="jxr_linenumber" name="L447" href="#L447">447</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> addLicenseToGroovy() <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="L448" href="#L448">448</a>         String filename = <span class="jxr_string">"tmp.groovy"</span>;
+<a class="jxr_linenumber" name="L449" href="#L449">449</a>         String firstLine = <span class="jxr_string">"/*"</span>;
+<a class="jxr_linenumber" name="L450" href="#L450">450</a> 
+<a class="jxr_linenumber" name="L451" href="#L451">451</a>         commonTestTemplate(filename, <strong class="jxr_keyword">new</strong> FileCreator() {
+<a class="jxr_linenumber" name="L452" href="#L452">452</a>                     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> createFile(Writer writer)
+<a class="jxr_linenumber" name="L453" href="#L453">453</a>                             <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="L454" href="#L454">454</a>                         writer.write(<span class="jxr_string">"package org.example \n"</span>);
+<a class="jxr_linenumber" name="L455" href="#L455">455</a>                         writer.write(<span class="jxr_string">"    class Foo {\n"</span>);
+<a class="jxr_linenumber" name="L456" href="#L456">456</a>                         writer.write(<span class="jxr_string">"    }\n"</span>);
+<a class="jxr_linenumber" name="L457" href="#L457">457</a>                     }
+<a class="jxr_linenumber" name="L458" href="#L458">458</a>                 },
+<a class="jxr_linenumber" name="L459" href="#L459">459</a>                 checkLines(firstLine));
+<a class="jxr_linenumber" name="L460" href="#L460">460</a>     }
+<a class="jxr_linenumber" name="L461" href="#L461">461</a> 
+<a class="jxr_linenumber" name="L462" href="#L462">462</a>     @Test
+<a class="jxr_linenumber" name="L463" href="#L463">463</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> addLicenseToCPlusPlus() <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="L464" href="#L464">464</a>         String filename = <span class="jxr_string">"tmp.cpp"</span>;
+<a class="jxr_linenumber" name="L465" href="#L465">465</a>         String firstLine = <span class="jxr_string">"/*"</span>;
+<a class="jxr_linenumber" name="L466" href="#L466">466</a> 
+<a class="jxr_linenumber" name="L467" href="#L467">467</a>         commonTestTemplate(filename, <strong class="jxr_keyword">new</strong> FileCreator() {
+<a class="jxr_linenumber" name="L468" href="#L468">468</a>                     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> createFile(Writer writer)
+<a class="jxr_linenumber" name="L469" href="#L469">469</a>                             <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="L470" href="#L470">470</a>                         writer.write(<span class="jxr_string">"namespace org.example {\n"</span>);
+<a class="jxr_linenumber" name="L471" href="#L471">471</a>                         writer.write(<span class="jxr_string">"    public class Foo {\n"</span>);
+<a class="jxr_linenumber" name="L472" href="#L472">472</a>                         writer.write(<span class="jxr_string">"    }\n"</span>);
+<a class="jxr_linenumber" name="L473" href="#L473">473</a>                         writer.write(<span class="jxr_string">"}\n"</span>);
+<a class="jxr_linenumber" name="L474" href="#L474">474</a>                     }
+<a class="jxr_linenumber" name="L475" href="#L475">475</a>                 },
+<a class="jxr_linenumber" name="L476" href="#L476">476</a>                 checkLines(firstLine));
+<a class="jxr_linenumber" name="L477" href="#L477">477</a>     }
+<a class="jxr_linenumber" name="L478" href="#L478">478</a> 
+<a class="jxr_linenumber" name="L479" href="#L479">479</a>     @Test
+<a class="jxr_linenumber" name="L480" href="#L480">480</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> addLicenseToGo() <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="L481" href="#L481">481</a>         String filename = <span class="jxr_string">"tmp.go"</span>;
+<a class="jxr_linenumber" name="L482" href="#L482">482</a>         <strong class="jxr_keyword">final</strong> String firstLine = <span class="jxr_string">"package main"</span>;
+<a class="jxr_linenumber" name="L483" href="#L483">483</a>         String secondLine = <span class="jxr_string">""</span>;
+<a class="jxr_linenumber" name="L484" href="#L484">484</a>         String thirdLine = <span class="jxr_string">"/*"</span>;
+<a class="jxr_linenumber" name="L485" href="#L485">485</a>         
+<a class="jxr_linenumber" name="L486" href="#L486">486</a>         		
+<a class="jxr_linenumber" name="L487" href="#L487">487</a> 
+<a class="jxr_linenumber" name="L488" href="#L488">488</a>         commonTestTemplate(filename, <strong class="jxr_keyword">new</strong> FileCreator() {
+<a class="jxr_linenumber" name="L489" href="#L489">489</a>                     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> createFile(Writer writer)
+<a class="jxr_linenumber" name="L490" href="#L490">490</a>                             <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="L491" href="#L491">491</a>                         writer.write(firstLine + <span class="jxr_string">"\n"</span>);
+<a class="jxr_linenumber" name="L492" href="#L492">492</a>                         writer.write(<span class="jxr_string">"import (\n"</span>);
+<a class="jxr_linenumber" name="L493" href="#L493">493</a>                         writer.write(<span class="jxr_string">"    log\n"</span>);
+<a class="jxr_linenumber" name="L494" href="#L494">494</a>                         writer.write(<span class="jxr_string">")\n"</span>);
+<a class="jxr_linenumber" name="L495" href="#L495">495</a>                     }
+<a class="jxr_linenumber" name="L496" href="#L496">496</a>                 },
+<a class="jxr_linenumber" name="L497" href="#L497">497</a>                 checkLines(firstLine, secondLine, thirdLine));
+<a class="jxr_linenumber" name="L498" href="#L498">498</a>     }    
+<a class="jxr_linenumber" name="L499" href="#L499">499</a> 
+<a class="jxr_linenumber" name="L500" href="#L500">500</a>     @Test
+<a class="jxr_linenumber" name="L501" href="#L501">501</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> fileWithBOM() <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="L502" href="#L502">502</a>         File f = Resources.getResourceFile(<span class="jxr_string">"violations/FilterTest.cs"</span>);
+<a class="jxr_linenumber" name="L503" href="#L503">503</a>        
+<a class="jxr_linenumber" name="L504" href="#L504">504</a>         ApacheV2LicenseAppender appender =
+<a class="jxr_linenumber" name="L505" href="#L505">505</a>                 <strong class="jxr_keyword">new</strong> ApacheV2LicenseAppender(DefaultLog.INSTANCE);
+<a class="jxr_linenumber" name="L506" href="#L506">506</a>         appender.append(f);
+<a class="jxr_linenumber" name="L507" href="#L507">507</a> 
+<a class="jxr_linenumber" name="L508" href="#L508">508</a>         <strong class="jxr_keyword">try</strong> (BufferedReader r =  <strong class="jxr_keyword">new</strong> BufferedReader(<strong class="jxr_keyword">new</strong> FileReader(f.getAbsolutePath()
+<a class="jxr_linenumber" name="L509" href="#L509">509</a>                     + <span class="jxr_string">".new"</span>))) {
+<a class="jxr_linenumber" name="L510" href="#L510">510</a>             assertEquals(<span class="jxr_string">"/*"</span>, r.readLine());
+<a class="jxr_linenumber" name="L511" href="#L511">511</a>             String line = <strong class="jxr_keyword">null</strong>;
+<a class="jxr_linenumber" name="L512" href="#L512">512</a>             <strong class="jxr_keyword">while</strong> ((line = r.readLine()) != <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="L513" href="#L513">513</a>                 <strong class="jxr_keyword">if</strong> (line.trim().length() == 0) {
+<a class="jxr_linenumber" name="L514" href="#L514">514</a>                     <strong class="jxr_keyword">break</strong>;
+<a class="jxr_linenumber" name="L515" href="#L515">515</a>                 }
+<a class="jxr_linenumber" name="L516" href="#L516">516</a>             }
+<a class="jxr_linenumber" name="L517" href="#L517">517</a>             assertEquals(<span class="jxr_string">"#if NET_2_0"</span>, r.readLine());
+<a class="jxr_linenumber" name="L518" href="#L518">518</a>         }
+<a class="jxr_linenumber" name="L519" href="#L519">519</a>     }
+<a class="jxr_linenumber" name="L520" href="#L520">520</a> 
+<a class="jxr_linenumber" name="L521" href="#L521">521</a>     @Test
+<a class="jxr_linenumber" name="L522" href="#L522">522</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> addLicenseToVS2003solution() <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="L523" href="#L523">523</a>         String filename = <span class="jxr_string">"tmp.sln"</span>;
+<a class="jxr_linenumber" name="L524" href="#L524">524</a>         <strong class="jxr_keyword">final</strong> String firstLine = <span class="jxr_string">"Microsoft Visual Studio Solution File,"</span>
+<a class="jxr_linenumber" name="L525" href="#L525">525</a>                 + <span class="jxr_string">" Format Version 8.0"</span>;
+<a class="jxr_linenumber" name="L526" href="#L526">526</a>         String secondLine = <span class="jxr_string">"#"</span> + FIRST_LICENSE_LINE;
+<a class="jxr_linenumber" name="L527" href="#L527">527</a> 
+<a class="jxr_linenumber" name="L528" href="#L528">528</a>         commonTestTemplate(filename, <strong class="jxr_keyword">new</strong> FileCreator() {
+<a class="jxr_linenumber" name="L529" href="#L529">529</a>                     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> createFile(Writer writer)
+<a class="jxr_linenumber" name="L530" href="#L530">530</a>                             <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="L531" href="#L531">531</a>                         writer.write(firstLine + <span class="jxr_string">"\n"</span>);
+<a class="jxr_linenumber" name="L532" href="#L532">532</a>                         writer.write(<span class="jxr_string">"Project(\&quot;{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\&quot;) = \&quot;ConsoleApp\&quot;, \&quot;Tutorials&#92;&#92;ConsoleApp&#92;&#92;cs&#92;&#92;src&#92;&#92;ConsoleApp.csproj\&quot;, \&quot;{933969DF-2BC5-44E6-8B1A-400FC276A23F}\&quot;\n"</span>);
+<a class="jxr_linenumber" name="L533" href="#L533">533</a>                         writer.write(<span class="jxr_string">"\tProjectSection(WebsiteProperties) = preProject\n"</span>);
+<a class="jxr_linenumber" name="L534" href="#L534">534</a>                         writer.write(<span class="jxr_string">"\t\tDebug.AspNetCompiler.Debug = \&quot;True\&quot;\n"</span>);
+<a class="jxr_linenumber" name="L535" href="#L535">535</a>                         writer.write(<span class="jxr_string">"\t\tRelease.AspNetCompiler.Debug = \&quot;False\&quot;\n"</span>);
+<a class="jxr_linenumber" name="L536" href="#L536">536</a>                         writer.write(<span class="jxr_string">"\tEndProjectSection\n"</span>);
+<a class="jxr_linenumber" name="L537" href="#L537">537</a>                         writer.write(<span class="jxr_string">"EndProject\n"</span>);
+<a class="jxr_linenumber" name="L538" href="#L538">538</a>                     }
+<a class="jxr_linenumber" name="L539" href="#L539">539</a>                 },
+<a class="jxr_linenumber" name="L540" href="#L540">540</a>                 checkLines(firstLine, secondLine));
+<a class="jxr_linenumber" name="L541" href="#L541">541</a>     }
+<a class="jxr_linenumber" name="L542" href="#L542">542</a> 
+<a class="jxr_linenumber" name="L543" href="#L543">543</a>     @Test
+<a class="jxr_linenumber" name="L544" href="#L544">544</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> addLicenseToVS2005solution() <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="L545" href="#L545">545</a>         String filename = <span class="jxr_string">"tmp.sln"</span>;
+<a class="jxr_linenumber" name="L546" href="#L546">546</a>         <strong class="jxr_keyword">final</strong> String firstLine = <span class="jxr_string">"Microsoft Visual Studio Solution File,"</span>
+<a class="jxr_linenumber" name="L547" href="#L547">547</a>                 + <span class="jxr_string">" Format Version 9.0"</span>;
+<a class="jxr_linenumber" name="L548" href="#L548">548</a>         <strong class="jxr_keyword">final</strong> String secondLine = <span class="jxr_string">"# Visual Studio 2005"</span>;
+<a class="jxr_linenumber" name="L549" href="#L549">549</a>         <strong class="jxr_keyword">final</strong> String thirdLine = <span class="jxr_string">"#"</span> + FIRST_LICENSE_LINE;
+<a class="jxr_linenumber" name="L550" href="#L550">550</a> 
+<a class="jxr_linenumber" name="L551" href="#L551">551</a>         commonTestTemplate(filename, <strong class="jxr_keyword">new</strong> FileCreator() {
+<a class="jxr_linenumber" name="L552" href="#L552">552</a>                     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> createFile(Writer writer)
+<a class="jxr_linenumber" name="L553" href="#L553">553</a>                             <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="L554" href="#L554">554</a>                         writer.write(firstLine + <span class="jxr_string">"\n"</span>);
+<a class="jxr_linenumber" name="L555" href="#L555">555</a>                         writer.write(secondLine + <span class="jxr_string">"\n"</span>);
+<a class="jxr_linenumber" name="L556" href="#L556">556</a>                         writer.write(<span class="jxr_string">"Project(\&quot;{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\&quot;) = \&quot;ConsoleApp\&quot;, \&quot;Tutorials&#92;&#92;ConsoleApp&#92;&#92;cs&#92;&#92;src&#92;&#92;ConsoleApp.csproj\&quot;, \&quot;{933969DF-2BC5-44E6-8B1A-400FC276A23F}\&quot;\n"</span>);
+<a class="jxr_linenumber" name="L557" href="#L557">557</a>                         writer.write(<span class="jxr_string">"\tProjectSection(WebsiteProperties) = preProject\n"</span>);
+<a class="jxr_linenumber" name="L558" href="#L558">558</a>                         writer.write(<span class="jxr_string">"\t\tDebug.AspNetCompiler.Debug = \&quot;True\&quot;\n"</span>);
+<a class="jxr_linenumber" name="L559" href="#L559">559</a>                         writer.write(<span class="jxr_string">"\t\tRelease.AspNetCompiler.Debug = \&quot;False\&quot;\n"</span>);
+<a class="jxr_linenumber" name="L560" href="#L560">560</a>                         writer.write(<span class="jxr_string">"\tEndProjectSection\n"</span>);
+<a class="jxr_linenumber" name="L561" href="#L561">561</a>                         writer.write(<span class="jxr_string">"EndProject\n"</span>);
+<a class="jxr_linenumber" name="L562" href="#L562">562</a>                     }
+<a class="jxr_linenumber" name="L563" href="#L563">563</a>                 },
+<a class="jxr_linenumber" name="L564" href="#L564">564</a>                 checkLines(firstLine, secondLine, thirdLine)
+<a class="jxr_linenumber" name="L565" href="#L565">565</a>                 );
+<a class="jxr_linenumber" name="L566" href="#L566">566</a>     }
+<a class="jxr_linenumber" name="L567" href="#L567">567</a> 
+<a class="jxr_linenumber" name="L568" href="#L568">568</a>     @Test
+<a class="jxr_linenumber" name="L569" href="#L569">569</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> addLicenseToVS2010ExpressSolution() <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="L570" href="#L570">570</a>         String filename = <span class="jxr_string">"tmp.sln"</span>;
+<a class="jxr_linenumber" name="L571" href="#L571">571</a>         <strong class="jxr_keyword">final</strong> String firstLine = <span class="jxr_string">"Microsoft Visual Studio Solution File, "</span>
+<a class="jxr_linenumber" name="L572" href="#L572">572</a>                 + <span class="jxr_string">"Format Version 11.00"</span>;
+<a class="jxr_linenumber" name="L573" href="#L573">573</a>         <strong class="jxr_keyword">final</strong> String secondLine = <span class="jxr_string">"# Visual C# Express 2010"</span>;
+<a class="jxr_linenumber" name="L574" href="#L574">574</a>         <strong class="jxr_keyword">final</strong> String thirdLine = <span class="jxr_string">"#"</span> + FIRST_LICENSE_LINE;
+<a class="jxr_linenumber" name="L575" href="#L575">575</a> 
+<a class="jxr_linenumber" name="L576" href="#L576">576</a>         commonTestTemplate(filename, <strong class="jxr_keyword">new</strong> FileCreator() {
+<a class="jxr_linenumber" name="L577" href="#L577">577</a>                     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> createFile(Writer writer)
+<a class="jxr_linenumber" name="L578" href="#L578">578</a>                             <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="L579" href="#L579">579</a>                         writer.write(firstLine + <span class="jxr_string">"\n"</span>);
+<a class="jxr_linenumber" name="L580" href="#L580">580</a>                         writer.write(secondLine + <span class="jxr_string">"\n"</span>);
+<a class="jxr_linenumber" name="L581" href="#L581">581</a>                         writer.write(<span class="jxr_string">"Project(\&quot;{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\&quot;) = \&quot;Lucene.Net\&quot;, \&quot;..&#92;&#92;..&#92;&#92;..&#92;&#92;src&#92;&#92;core&#92;&#92;Lucene.Net.csproj\&quot;, \&quot;{5D4AD9BE-1FFB-41AB-9943-25737971BF57}\&quot;\n"</span>);
+<a class="jxr_linenumber" name="L582" href="#L582">582</a>                         writer.write(<span class="jxr_string">"EndProject\n"</span>);
+<a class="jxr_linenumber" name="L583" href="#L583">583</a>                         writer.write(<span class="jxr_string">"Project(\&quot;{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\&quot;) = \&quot;Contrib.Highlighter\&quot;, \&quot;..&#92;&#92;..&#92;&#92;..&#92;&#92;src&#92;&#92;contrib&#92;&#92;Highlighter&#92;&#92;Contrib.Highlighter.csproj\&quot;, \&quot;{901D5415-383C-4AA6-A256-879558841BEA}\&quot;\n"</span>);
+<a class="jxr_linenumber" name="L584" href="#L584">584</a>                         writer.write(<span class="jxr_string">"EndProject\n"</span>);
+<a class="jxr_linenumber" name="L585" href="#L585">585</a>                         writer.write(<span class="jxr_string">"Global\n"</span>);
+<a class="jxr_linenumber" name="L586" href="#L586">586</a>                         writer.write(<span class="jxr_string">"GlobalSection(SolutionConfigurationPlatforms) = preSolution\n"</span>);
+<a class="jxr_linenumber" name="L587" href="#L587">587</a>                         writer.write(<span class="jxr_string">"Debug|Any CPU = Debug|Any CPU\n"</span>);
+<a class="jxr_linenumber" name="L588" href="#L588">588</a>                         writer.write(<span class="jxr_string">"Release|Any CPU = Release|Any CPU\n"</span>);
+<a class="jxr_linenumber" name="L589" href="#L589">589</a>                         writer.write(<span class="jxr_string">"EndGlobalSection\n"</span>);
+<a class="jxr_linenumber" name="L590" href="#L590">590</a>                         writer.write(<span class="jxr_string">"GlobalSection(ProjectConfigurationPlatforms) = postSolution\n"</span>);
+<a class="jxr_linenumber" name="L591" href="#L591">591</a>                         writer.write(<span class="jxr_string">"{5D4AD9BE-1FFB-41AB-9943-25737971BF57}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n"</span>);
+<a class="jxr_linenumber" name="L592" href="#L592">592</a>                         writer.write(<span class="jxr_string">"{5D4AD9BE-1FFB-41AB-9943-25737971BF57}.Debug|Any CPU.Build.0 = Debug|Any CPU\n"</span>);
+<a class="jxr_linenumber" name="L593" href="#L593">593</a>                         writer.write(<span class="jxr_string">"{5D4AD9BE-1FFB-41AB-9943-25737971BF57}.Release|Any CPU.ActiveCfg = Release|Any CPU\n"</span>);
+<a class="jxr_linenumber" name="L594" href="#L594">594</a>                         writer.write(<span class="jxr_string">"{5D4AD9BE-1FFB-41AB-9943-25737971BF57}.Release|Any CPU.Build.0 = Release|Any CPU\n"</span>);
+<a class="jxr_linenumber" name="L595" href="#L595">595</a>                         writer.write(<span class="jxr_string">"{901D5415-383C-4AA6-A256-879558841BEA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n"</span>);
+<a class="jxr_linenumber" name="L596" href="#L596">596</a>                         writer.write(<span class="jxr_string">"{901D5415-383C-4AA6-A256-879558841BEA}.Debug|Any CPU.Build.0 = Debug|Any CPU\n"</span>);
+<a class="jxr_linenumber" name="L597" href="#L597">597</a>                         writer.write(<span class="jxr_string">"{901D5415-383C-4AA6-A256-879558841BEA}.Release|Any CPU.ActiveCfg = Release|Any CPU\n"</span>);
+<a class="jxr_linenumber" name="L598" href="#L598">598</a>                         writer.write(<span class="jxr_string">"{901D5415-383C-4AA6-A256-879558841BEA}.Release|Any CPU.Build.0 = Release|Any CPU\n"</span>);
+<a class="jxr_linenumber" name="L599" href="#L599">599</a>                         writer.write(<span class="jxr_string">"EndGlobalSection\n"</span>);
+<a class="jxr_linenumber" name="L600" href="#L600">600</a>                         writer.write(<span class="jxr_string">"GlobalSection(SolutionProperties) = preSolution\n"</span>);
+<a class="jxr_linenumber" name="L601" href="#L601">601</a>                         writer.write(<span class="jxr_string">"HideSolutionNode = FALSE\n"</span>);
+<a class="jxr_linenumber" name="L602" href="#L602">602</a>                         writer.write(<span class="jxr_string">"EndGlobalSection\n"</span>);
+<a class="jxr_linenumber" name="L603" href="#L603">603</a>                         writer.write(<span class="jxr_string">"EndGlobal \n"</span>);
+<a class="jxr_linenumber" name="L604" href="#L604">604</a>                     }
+<a class="jxr_linenumber" name="L605" href="#L605">605</a>                 },
+<a class="jxr_linenumber" name="L606" href="#L606">606</a>                 checkLines(firstLine, secondLine, thirdLine)
+<a class="jxr_linenumber" name="L607" href="#L607">607</a>                 );
+<a class="jxr_linenumber" name="L608" href="#L608">608</a>     }
+<a class="jxr_linenumber" name="L609" href="#L609">609</a> 
+<a class="jxr_linenumber" name="L610" href="#L610">610</a>     @Test
+<a class="jxr_linenumber" name="L611" href="#L611">611</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> addLicenseToVS2010SolutionWithBlankLine() <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="L612" href="#L612">612</a>         String filename = <span class="jxr_string">"tmp.sln"</span>;
+<a class="jxr_linenumber" name="L613" href="#L613">613</a>         <strong class="jxr_keyword">final</strong> String firstLine = <span class="jxr_string">""</span>;
+<a class="jxr_linenumber" name="L614" href="#L614">614</a>         <strong class="jxr_keyword">final</strong> String secondLine = <span class="jxr_string">"Microsoft Visual Studio Solution File, "</span>
+<a class="jxr_linenumber" name="L615" href="#L615">615</a>                 + <span class="jxr_string">"Format Version 11.00"</span>;
+<a class="jxr_linenumber" name="L616" href="#L616">616</a>         <strong class="jxr_keyword">final</strong> String thirdLine = <span class="jxr_string">"# Visual C# Express 2010"</span>;
+<a class="jxr_linenumber" name="L617" href="#L617">617</a>         <strong class="jxr_keyword">final</strong> String forthLine = <span class="jxr_string">"#"</span> + FIRST_LICENSE_LINE;
+<a class="jxr_linenumber" name="L618" href="#L618">618</a> 
+<a class="jxr_linenumber" name="L619" href="#L619">619</a>         commonTestTemplate(filename, <strong class="jxr_keyword">new</strong> FileCreator() {
+<a class="jxr_linenumber" name="L620" href="#L620">620</a>                     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> createFile(Writer writer)
+<a class="jxr_linenumber" name="L621" href="#L621">621</a>                             <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="L622" href="#L622">622</a>                         writer.write(firstLine + <span class="jxr_string">"\n"</span>);
+<a class="jxr_linenumber" name="L623" href="#L623">623</a>                         writer.write(secondLine + <span class="jxr_string">"\n"</span>);
+<a class="jxr_linenumber" name="L624" href="#L624">624</a>                         writer.write(thirdLine + <span class="jxr_string">"\n"</span>);
+<a class="jxr_linenumber" name="L625" href="#L625">625</a>                         writer.write(<span class="jxr_string">"Project(\&quot;{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\&quot;) = \&quot;Lucene.Net\&quot;, \&quot;..&#92;&#92;..&#92;&#92;..&#92;&#92;src&#92;&#92;core&#92;&#92;Lucene.Net.csproj\&quot;, \&quot;{5D4AD9BE-1FFB-41AB-9943-25737971BF57}\&quot;\n"</span>);
+<a class="jxr_linenumber" name="L626" href="#L626">626</a>                         writer.write(<span class="jxr_string">"EndProject\n"</span>);
+<a class="jxr_linenumber" name="L627" href="#L627">627</a>                         writer.write(<span class="jxr_string">"Project(\&quot;{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\&quot;) = \&quot;Contrib.Highlighter\&quot;, \&quot;..&#92;&#92;..&#92;&#92;..&#92;&#92;src&#92;&#92;contrib&#92;&#92;Highlighter&#92;&#92;Contrib.Highlighter.csproj\&quot;, \&quot;{901D5415-383C-4AA6-A256-879558841BEA}\&quot;\n"</span>);
+<a class="jxr_linenumber" name="L628" href="#L628">628</a>                         writer.write(<span class="jxr_string">"EndProject\n"</span>);
+<a class="jxr_linenumber" name="L629" href="#L629">629</a>                         writer.write(<span class="jxr_string">"Global\n"</span>);
+<a class="jxr_linenumber" name="L630" href="#L630">630</a>                         writer.write(<span class="jxr_string">"GlobalSection(SolutionConfigurationPlatforms) = preSolution\n"</span>);
+<a class="jxr_linenumber" name="L631" href="#L631">631</a>                         writer.write(<span class="jxr_string">"Debug|Any CPU = Debug|Any CPU\n"</span>);
+<a class="jxr_linenumber" name="L632" href="#L632">632</a>                         writer.write(<span class="jxr_string">"Release|Any CPU = Release|Any CPU\n"</span>);
+<a class="jxr_linenumber" name="L633" href="#L633">633</a>                         writer.write(<span class="jxr_string">"EndGlobalSection\n"</span>);
+<a class="jxr_linenumber" name="L634" href="#L634">634</a>                         writer.write(<span class="jxr_string">"GlobalSection(ProjectConfigurationPlatforms) = postSolution\n"</span>);
+<a class="jxr_linenumber" name="L635" href="#L635">635</a>                         writer.write(<span class="jxr_string">"{5D4AD9BE-1FFB-41AB-9943-25737971BF57}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n"</span>);
+<a class="jxr_linenumber" name="L636" href="#L636">636</a>                         writer.write(<span class="jxr_string">"{5D4AD9BE-1FFB-41AB-9943-25737971BF57}.Debug|Any CPU.Build.0 = Debug|Any CPU\n"</span>);
+<a class="jxr_linenumber" name="L637" href="#L637">637</a>                         writer.write(<span class="jxr_string">"{5D4AD9BE-1FFB-41AB-9943-25737971BF57}.Release|Any CPU.ActiveCfg = Release|Any CPU\n"</span>);
+<a class="jxr_linenumber" name="L638" href="#L638">638</a>                         writer.write(<span class="jxr_string">"{5D4AD9BE-1FFB-41AB-9943-25737971BF57}.Release|Any CPU.Build.0 = Release|Any CPU\n"</span>);
+<a class="jxr_linenumber" name="L639" href="#L639">639</a>                         writer.write(<span class="jxr_string">"{901D5415-383C-4AA6-A256-879558841BEA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n"</span>);
+<a class="jxr_linenumber" name="L640" href="#L640">640</a>                         writer.write(<span class="jxr_string">"{901D5415-383C-4AA6-A256-879558841BEA}.Debug|Any CPU.Build.0 = Debug|Any CPU\n"</span>);
+<a class="jxr_linenumber" name="L641" href="#L641">641</a>                         writer.write(<span class="jxr_string">"{901D5415-383C-4AA6-A256-879558841BEA}.Release|Any CPU.ActiveCfg = Release|Any CPU\n"</span>);
+<a class="jxr_linenumber" name="L642" href="#L642">642</a>                         writer.write(<span class="jxr_string">"{901D5415-383C-4AA6-A256-879558841BEA}.Release|Any CPU.Build.0 = Release|Any CPU\n"</span>);
+<a class="jxr_linenumber" name="L643" href="#L643">643</a>                         writer.write(<span class="jxr_string">"EndGlobalSection\n"</span>);
+<a class="jxr_linenumber" name="L644" href="#L644">644</a>                         writer.write(<span class="jxr_string">"GlobalSection(SolutionProperties) = preSolution\n"</span>);
+<a class="jxr_linenumber" name="L645" href="#L645">645</a>                         writer.write(<span class="jxr_string">"HideSolutionNode = FALSE\n"</span>);
+<a class="jxr_linenumber" name="L646" href="#L646">646</a>                         writer.write(<span class="jxr_string">"EndGlobalSection\n"</span>);
+<a class="jxr_linenumber" name="L647" href="#L647">647</a>                         writer.write(<span class="jxr_string">"EndGlobal \n"</span>);
+<a class="jxr_linenumber" name="L648" href="#L648">648</a>                     }
+<a class="jxr_linenumber" name="L649" href="#L649">649</a>                 },
+<a class="jxr_linenumber" name="L650" href="#L650">650</a>                 checkLines(firstLine, secondLine, thirdLine, forthLine)
+<a class="jxr_linenumber" name="L651" href="#L651">651</a>                );
+<a class="jxr_linenumber" name="L652" href="#L652">652</a>     }
+<a class="jxr_linenumber" name="L653" href="#L653">653</a>     
+<a class="jxr_linenumber" name="L654" href="#L654">654</a>     @Test
+<a class="jxr_linenumber" name="L655" href="#L655">655</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> addLicenseMarkdown() <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="L656" href="#L656">656</a>         String filename = <span class="jxr_string">"tmp.md"</span>;
+<a class="jxr_linenumber" name="L657" href="#L657">657</a> 
+<a class="jxr_linenumber" name="L658" href="#L658">658</a>         commonTestTemplate(filename, <strong class="jxr_keyword">new</strong> FileCreator() {
+<a class="jxr_linenumber" name="L659" href="#L659">659</a>                     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> createFile(Writer writer)
+<a class="jxr_linenumber" name="L660" href="#L660">660</a>                             <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="L661" href="#L661">661</a>                         writer.write(<span class="jxr_string">"## This is the first header\n"</span>);
+<a class="jxr_linenumber" name="L662" href="#L662">662</a>                         writer.write(<span class="jxr_string">" * this is a list entry\n"</span>);
+<a class="jxr_linenumber" name="L663" href="#L663">663</a>                         writer.write(<span class="jxr_string">" * this is another list entry\n"</span>);
+<a class="jxr_linenumber" name="L664" href="#L664">664</a>                         writer.write(<span class="jxr_string">" &lt;!-- this is a comment line --&gt;"</span>);
+<a class="jxr_linenumber" name="L665" href="#L665">665</a>                         writer.write(<span class="jxr_string">"## This is the second header\n"</span>);
+<a class="jxr_linenumber" name="L666" href="#L666">666</a>                     }
+<a class="jxr_linenumber" name="L667" href="#L667">667</a>                 },
+<a class="jxr_linenumber" name="L668" href="#L668">668</a>                 <strong class="jxr_keyword">new</strong> NewFileReader() {
+<a class="jxr_linenumber" name="L669" href="#L669">669</a>                     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> readFile(BufferedReader r) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="L670" href="#L670">670</a>                         String line = r.readLine();
+<a class="jxr_linenumber" name="L671" href="#L671">671</a>                         assertEquals(
+<a class="jxr_linenumber" name="L672" href="#L672">672</a>                                 <span class="jxr_string">"&lt;!--"</span>, line, <span class="jxr_string">"First line is incorrect"</span>);
+<a class="jxr_linenumber" name="L673" href="#L673">673</a>                         line = r.readLine();
+<a class="jxr_linenumber" name="L674" href="#L674">674</a>                     }
+<a class="jxr_linenumber" name="L675" href="#L675">675</a>                 });
+<a class="jxr_linenumber" name="L676" href="#L676">676</a>     }
+<a class="jxr_linenumber" name="L677" href="#L677">677</a> }
 </pre>
 <hr/>
 <div id="footer">Copyright &#169; 2006&#x2013;2024 <a href="https://www.apache.org">Apache Software Foundation</a>. All rights reserved.</div>
diff --git a/rat0161/apache-rat-core/xref-test/org/apache/rat/report/xml/XmlReportFactoryTest.html b/rat0161/apache-rat-core/xref-test/org/apache/rat/report/xml/XmlReportFactoryTest.html
index 8c872e70..2fae2487 100644
--- a/rat0161/apache-rat-core/xref-test/org/apache/rat/report/xml/XmlReportFactoryTest.html
+++ b/rat0161/apache-rat-core/xref-test/org/apache/rat/report/xml/XmlReportFactoryTest.html
@@ -82,54 +82,52 @@
 <a class="jxr_linenumber" name="L74" href="#L74">74</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> standardReport() <strong class="jxr_keyword">throws</strong> Exception {
 <a class="jxr_linenumber" name="L75" href="#L75">75</a>          <strong class="jxr_keyword">final</strong> String elementsPath = Resources.getResourceDirectory(<span class="jxr_string">"elements/Source.java"</span>);
 <a class="jxr_linenumber" name="L76" href="#L76">76</a>  
-<a class="jxr_linenumber" name="L77" href="#L77">77</a>          ILicenseFamily family = ILicenseFamily.builder().setLicenseFamilyCategory(<span class="jxr_string">"TEST"</span>)
-<a class="jxr_linenumber" name="L78" href="#L78">78</a>                  .setLicenseFamilyName(<span class="jxr_string">"Testing family"</span>).build();
-<a class="jxr_linenumber" name="L79" href="#L79">79</a>          
-<a class="jxr_linenumber" name="L80" href="#L80">80</a>          <strong class="jxr_keyword">final</strong> <a name="TestingLicense" href="../../../../../org/apache/rat/testhelpers/TestingLicense.html#TestingLicense">TestingLicense</a> testingLicense = <strong class="jxr_keyword">new</strong> <a name="TestingLicense" href="../../../../../org/apache/rat/testhelpers/TestingLicense.html#TestingLicense">TestingLicense</a>(<strong class="jxr_keyword">new</strong> <a name="TestingMatcher" href [...]
-<a class="jxr_linenumber" name="L81" href="#L81">81</a>  
-<a class="jxr_linenumber" name="L82" href="#L82">82</a>          DirectoryWalker directory = <strong class="jxr_keyword">new</strong> DirectoryWalker(<strong class="jxr_keyword">new</strong> File(elementsPath), IGNORE_EMPTY, HiddenFileFilter.HIDDEN);
-<a class="jxr_linenumber" name="L83" href="#L83">83</a>          <strong class="jxr_keyword">final</strong> ClaimStatistic statistic = <strong class="jxr_keyword">new</strong> ClaimStatistic();
-<a class="jxr_linenumber" name="L84" href="#L84">84</a>          <strong class="jxr_keyword">final</strong> ReportConfiguration configuration = <strong class="jxr_keyword">new</strong> ReportConfiguration(DefaultLog.INSTANCE);
-<a class="jxr_linenumber" name="L85" href="#L85">85</a>          configuration.addLicense(testingLicense);
-<a class="jxr_linenumber" name="L86" href="#L86">86</a>          RatReport report = XmlReportFactory.createStandardReport(writer, statistic, configuration);
-<a class="jxr_linenumber" name="L87" href="#L87">87</a>          report.startReport();
-<a class="jxr_linenumber" name="L88" href="#L88">88</a>          report(directory, report);
-<a class="jxr_linenumber" name="L89" href="#L89">89</a>          report.endReport();
-<a class="jxr_linenumber" name="L90" href="#L90">90</a>          writer.closeDocument();
-<a class="jxr_linenumber" name="L91" href="#L91">91</a>          <strong class="jxr_keyword">final</strong> String output = out.toString();
-<a class="jxr_linenumber" name="L92" href="#L92">92</a>          assertTrue(
-<a class="jxr_linenumber" name="L93" href="#L93">93</a>                  output.startsWith(<span class="jxr_string">"&lt;?xml version='1.0'?&gt;"</span> + <span class="jxr_string">"&lt;rat-report timestamp="</span>), <span class="jxr_string">"Preamble and document element are OK"</span>);
-<a class="jxr_linenumber" name="L94" href="#L94">94</a>  
-<a class="jxr_linenumber" name="L95" href="#L95">95</a>          assertTrue( XmlUtils.isWellFormedXml(output), <span class="jxr_string">"Is well formed"</span>);
+<a class="jxr_linenumber" name="L77" href="#L77">77</a>          
+<a class="jxr_linenumber" name="L78" href="#L78">78</a>          <strong class="jxr_keyword">final</strong> <a name="TestingLicense" href="../../../../../org/apache/rat/testhelpers/TestingLicense.html#TestingLicense">TestingLicense</a> testingLicense = <strong class="jxr_keyword">new</strong> <a name="TestingLicense" href="../../../../../org/apache/rat/testhelpers/TestingLicense.html#TestingLicense">TestingLicense</a>(<strong class="jxr_keyword">new</strong> <a name="TestingMatcher" href [...]
+<a class="jxr_linenumber" name="L79" href="#L79">79</a>  
+<a class="jxr_linenumber" name="L80" href="#L80">80</a>          DirectoryWalker directory = <strong class="jxr_keyword">new</strong> DirectoryWalker(<strong class="jxr_keyword">new</strong> File(elementsPath), IGNORE_EMPTY, HiddenFileFilter.HIDDEN);
+<a class="jxr_linenumber" name="L81" href="#L81">81</a>          <strong class="jxr_keyword">final</strong> ClaimStatistic statistic = <strong class="jxr_keyword">new</strong> ClaimStatistic();
+<a class="jxr_linenumber" name="L82" href="#L82">82</a>          <strong class="jxr_keyword">final</strong> ReportConfiguration configuration = <strong class="jxr_keyword">new</strong> ReportConfiguration(DefaultLog.INSTANCE);
+<a class="jxr_linenumber" name="L83" href="#L83">83</a>          configuration.addLicense(testingLicense);
+<a class="jxr_linenumber" name="L84" href="#L84">84</a>          RatReport report = XmlReportFactory.createStandardReport(writer, statistic, configuration);
+<a class="jxr_linenumber" name="L85" href="#L85">85</a>          report.startReport();
+<a class="jxr_linenumber" name="L86" href="#L86">86</a>          report(directory, report);
+<a class="jxr_linenumber" name="L87" href="#L87">87</a>          report.endReport();
+<a class="jxr_linenumber" name="L88" href="#L88">88</a>          writer.closeDocument();
+<a class="jxr_linenumber" name="L89" href="#L89">89</a>          <strong class="jxr_keyword">final</strong> String output = out.toString();
+<a class="jxr_linenumber" name="L90" href="#L90">90</a>          assertTrue(
+<a class="jxr_linenumber" name="L91" href="#L91">91</a>                  output.startsWith(<span class="jxr_string">"&lt;?xml version='1.0'?&gt;"</span> + <span class="jxr_string">"&lt;rat-report timestamp="</span>), <span class="jxr_string">"Preamble and document element are OK"</span>);
+<a class="jxr_linenumber" name="L92" href="#L92">92</a>  
+<a class="jxr_linenumber" name="L93" href="#L93">93</a>          assertTrue( XmlUtils.isWellFormedXml(output), <span class="jxr_string">"Is well formed"</span>);
+<a class="jxr_linenumber" name="L94" href="#L94">94</a>          assertEquals(Integer.valueOf(2),
+<a class="jxr_linenumber" name="L95" href="#L95">95</a>                  statistic.getDocumentCategoryMap().get(MetaData.RAT_DOCUMENT_CATEGORY_VALUE_BINARY), <span class="jxr_string">"Binary files"</span>);
 <a class="jxr_linenumber" name="L96" href="#L96">96</a>          assertEquals(Integer.valueOf(2),
-<a class="jxr_linenumber" name="L97" href="#L97">97</a>                  statistic.getDocumentCategoryMap().get(MetaData.RAT_DOCUMENT_CATEGORY_VALUE_BINARY), <span class="jxr_string">"Binary files"</span>);
-<a class="jxr_linenumber" name="L98" href="#L98">98</a>          assertEquals(Integer.valueOf(2),
-<a class="jxr_linenumber" name="L99" href="#L99">99</a>                  statistic.getDocumentCategoryMap().get(MetaData.RAT_DOCUMENT_CATEGORY_VALUE_NOTICE), <span class="jxr_string">"Notice files"</span>);
-<a class="jxr_linenumber" name="L100" href="#L100">100</a>         assertEquals(Integer.valueOf(6),
-<a class="jxr_linenumber" name="L101" href="#L101">101</a>                 statistic.getDocumentCategoryMap().get(MetaData.RAT_DOCUMENT_CATEGORY_VALUE_STANDARD), <span class="jxr_string">"Standard files"</span>);
-<a class="jxr_linenumber" name="L102" href="#L102">102</a>         assertEquals(Integer.valueOf(1),
-<a class="jxr_linenumber" name="L103" href="#L103">103</a>                 statistic.getDocumentCategoryMap().get(MetaData.RAT_DOCUMENT_CATEGORY_VALUE_ARCHIVE), <span class="jxr_string">"Archives"</span>);
-<a class="jxr_linenumber" name="L104" href="#L104">104</a>     }
-<a class="jxr_linenumber" name="L105" href="#L105">105</a> 
-<a class="jxr_linenumber" name="L106" href="#L106">106</a>     @Test
-<a class="jxr_linenumber" name="L107" href="#L107">107</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testNoLicense() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="L108" href="#L108">108</a> 
-<a class="jxr_linenumber" name="L109" href="#L109">109</a>         <strong class="jxr_keyword">final</strong> ILicense mockLicense = mock(ILicense.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="L110" href="#L110">110</a>         when(mockLicense.matches(any())).thenReturn(State.t);
-<a class="jxr_linenumber" name="L111" href="#L111">111</a>         when(mockLicense.getLicenseFamily()).thenReturn(family);
-<a class="jxr_linenumber" name="L112" href="#L112">112</a> 
-<a class="jxr_linenumber" name="L113" href="#L113">113</a>         <strong class="jxr_keyword">final</strong> ClaimStatistic statistic = <strong class="jxr_keyword">new</strong> ClaimStatistic();
-<a class="jxr_linenumber" name="L114" href="#L114">114</a>         <strong class="jxr_keyword">final</strong> ReportConfiguration configuration = <strong class="jxr_keyword">new</strong> ReportConfiguration(DefaultLog.INSTANCE);
-<a class="jxr_linenumber" name="L115" href="#L115">115</a>         <em class="jxr_comment">// configuration.addLicense(mockLicense);</em>
-<a class="jxr_linenumber" name="L116" href="#L116">116</a>         <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="L117" href="#L117">117</a>             XmlReportFactory.createStandardReport(writer, statistic, configuration);
-<a class="jxr_linenumber" name="L118" href="#L118">118</a>             fail(<span class="jxr_string">"Should have thrown exception"</span>);
-<a class="jxr_linenumber" name="L119" href="#L119">119</a>         } <strong class="jxr_keyword">catch</strong> (ConfigurationException e) {
-<a class="jxr_linenumber" name="L120" href="#L120">120</a>             <em class="jxr_comment">// expected;</em>
-<a class="jxr_linenumber" name="L121" href="#L121">121</a>         }
-<a class="jxr_linenumber" name="L122" href="#L122">122</a> 
-<a class="jxr_linenumber" name="L123" href="#L123">123</a>     }
-<a class="jxr_linenumber" name="L124" href="#L124">124</a> }
+<a class="jxr_linenumber" name="L97" href="#L97">97</a>                  statistic.getDocumentCategoryMap().get(MetaData.RAT_DOCUMENT_CATEGORY_VALUE_NOTICE), <span class="jxr_string">"Notice files"</span>);
+<a class="jxr_linenumber" name="L98" href="#L98">98</a>          assertEquals(Integer.valueOf(6),
+<a class="jxr_linenumber" name="L99" href="#L99">99</a>                  statistic.getDocumentCategoryMap().get(MetaData.RAT_DOCUMENT_CATEGORY_VALUE_STANDARD), <span class="jxr_string">"Standard files"</span>);
+<a class="jxr_linenumber" name="L100" href="#L100">100</a>         assertEquals(Integer.valueOf(1),
+<a class="jxr_linenumber" name="L101" href="#L101">101</a>                 statistic.getDocumentCategoryMap().get(MetaData.RAT_DOCUMENT_CATEGORY_VALUE_ARCHIVE), <span class="jxr_string">"Archives"</span>);
+<a class="jxr_linenumber" name="L102" href="#L102">102</a>     }
+<a class="jxr_linenumber" name="L103" href="#L103">103</a> 
+<a class="jxr_linenumber" name="L104" href="#L104">104</a>     @Test
+<a class="jxr_linenumber" name="L105" href="#L105">105</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testNoLicense() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="L106" href="#L106">106</a> 
+<a class="jxr_linenumber" name="L107" href="#L107">107</a>         <strong class="jxr_keyword">final</strong> ILicense mockLicense = mock(ILicense.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="L108" href="#L108">108</a>         when(mockLicense.matches(any())).thenReturn(State.t);
+<a class="jxr_linenumber" name="L109" href="#L109">109</a>         when(mockLicense.getLicenseFamily()).thenReturn(family);
+<a class="jxr_linenumber" name="L110" href="#L110">110</a> 
+<a class="jxr_linenumber" name="L111" href="#L111">111</a>         <strong class="jxr_keyword">final</strong> ClaimStatistic statistic = <strong class="jxr_keyword">new</strong> ClaimStatistic();
+<a class="jxr_linenumber" name="L112" href="#L112">112</a>         <strong class="jxr_keyword">final</strong> ReportConfiguration configuration = <strong class="jxr_keyword">new</strong> ReportConfiguration(DefaultLog.INSTANCE);
+<a class="jxr_linenumber" name="L113" href="#L113">113</a>         <em class="jxr_comment">// configuration.addLicense(mockLicense);</em>
+<a class="jxr_linenumber" name="L114" href="#L114">114</a>         <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="L115" href="#L115">115</a>             XmlReportFactory.createStandardReport(writer, statistic, configuration);
+<a class="jxr_linenumber" name="L116" href="#L116">116</a>             fail(<span class="jxr_string">"Should have thrown exception"</span>);
+<a class="jxr_linenumber" name="L117" href="#L117">117</a>         } <strong class="jxr_keyword">catch</strong> (ConfigurationException e) {
+<a class="jxr_linenumber" name="L118" href="#L118">118</a>             <em class="jxr_comment">// expected;</em>
+<a class="jxr_linenumber" name="L119" href="#L119">119</a>         }
+<a class="jxr_linenumber" name="L120" href="#L120">120</a> 
+<a class="jxr_linenumber" name="L121" href="#L121">121</a>     }
+<a class="jxr_linenumber" name="L122" href="#L122">122</a> }
 </pre>
 <hr/>
 <div id="footer">Copyright &#169; 2006&#x2013;2024 <a href="https://www.apache.org">Apache Software Foundation</a>. All rights reserved.</div>
diff --git a/rat0161/apache-rat-core/xref-test/org/apache/rat/report/xml/XmlReportTest.html b/rat0161/apache-rat-core/xref-test/org/apache/rat/report/xml/XmlReportTest.html
index f6f41bd0..dd381514 100644
--- a/rat0161/apache-rat-core/xref-test/org/apache/rat/report/xml/XmlReportTest.html
+++ b/rat0161/apache-rat-core/xref-test/org/apache/rat/report/xml/XmlReportTest.html
@@ -58,72 +58,73 @@
 <a class="jxr_linenumber" name="L50" href="#L50">50</a>  <strong class="jxr_keyword">import</strong> org.apache.rat.test.utils.Resources;
 <a class="jxr_linenumber" name="L51" href="#L51">51</a>  <strong class="jxr_keyword">import</strong> org.apache.rat.testhelpers.TestingLicense;
 <a class="jxr_linenumber" name="L52" href="#L52">52</a>  <strong class="jxr_keyword">import</strong> org.apache.rat.testhelpers.XmlUtils;
-<a class="jxr_linenumber" name="L53" href="#L53">53</a>  <strong class="jxr_keyword">import</strong> org.apache.rat.walker.DirectoryWalker;
-<a class="jxr_linenumber" name="L54" href="#L54">54</a>  <strong class="jxr_keyword">import</strong> org.junit.jupiter.api.BeforeEach;
-<a class="jxr_linenumber" name="L55" href="#L55">55</a>  <strong class="jxr_keyword">import</strong> org.junit.jupiter.api.Test;
-<a class="jxr_linenumber" name="L56" href="#L56">56</a>  <strong class="jxr_keyword">import</strong> org.w3c.dom.Document;
-<a class="jxr_linenumber" name="L57" href="#L57">57</a>  
-<a class="jxr_linenumber" name="L58" href="#L58">58</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a name="XmlReportTest" href="../../../../../org/apache/rat/report/xml/XmlReportTest.html#XmlReportTest">XmlReportTest</a> {
-<a class="jxr_linenumber" name="L59" href="#L59">59</a>  
-<a class="jxr_linenumber" name="L60" href="#L60">60</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Pattern IGNORE = Pattern.compile(<span class="jxr_string">".svn"</span>);
-<a class="jxr_linenumber" name="L61" href="#L61">61</a>      <strong class="jxr_keyword">private</strong> ByteArrayOutputStream out;
-<a class="jxr_linenumber" name="L62" href="#L62">62</a>      <strong class="jxr_keyword">private</strong> IXmlWriter writer;
-<a class="jxr_linenumber" name="L63" href="#L63">63</a>      <strong class="jxr_keyword">private</strong> RatReport report;
-<a class="jxr_linenumber" name="L64" href="#L64">64</a>  
-<a class="jxr_linenumber" name="L65" href="#L65">65</a>      @BeforeEach
-<a class="jxr_linenumber" name="L66" href="#L66">66</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setUp() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="L67" href="#L67">67</a>          out = <strong class="jxr_keyword">new</strong> ByteArrayOutputStream();
-<a class="jxr_linenumber" name="L68" href="#L68">68</a>          writer = <strong class="jxr_keyword">new</strong> XmlWriter(<strong class="jxr_keyword">new</strong> BufferedWriter(<strong class="jxr_keyword">new</strong> OutputStreamWriter(out)));
-<a class="jxr_linenumber" name="L69" href="#L69">69</a>          writer.startDocument();
-<a class="jxr_linenumber" name="L70" href="#L70">70</a>          <strong class="jxr_keyword">final</strong> SimpleXmlClaimReporter reporter = <strong class="jxr_keyword">new</strong> SimpleXmlClaimReporter(writer);
-<a class="jxr_linenumber" name="L71" href="#L71">71</a>          <strong class="jxr_keyword">final</strong> IHeaderMatcher asf1Matcher = <strong class="jxr_keyword">new</strong> SimpleTextMatcher(<span class="jxr_string">"http://www.apache.org/licenses/LICENSE-2.0"</span>);
-<a class="jxr_linenumber" name="L72" href="#L72">72</a>          <strong class="jxr_keyword">final</strong> IHeaderMatcher asf2Matcher = <strong class="jxr_keyword">new</strong> SimpleTextMatcher(<span class="jxr_string">"https://www.apache.org/licenses/LICENSE-2.0.txt"</span>);
-<a class="jxr_linenumber" name="L73" href="#L73">73</a>          <strong class="jxr_keyword">final</strong> IHeaderMatcher asfMatcher = <strong class="jxr_keyword">new</strong> OrMatcher(Arrays.asList(asf1Matcher, asf2Matcher));
-<a class="jxr_linenumber" name="L74" href="#L74">74</a>          <strong class="jxr_keyword">final</strong> ILicense asfLic = <strong class="jxr_keyword">new</strong> <a name="TestingLicense" href="../../../../../org/apache/rat/testhelpers/TestingLicense.html#TestingLicense">TestingLicense</a>(<span class="jxr_string">"ASF"</span>, asfMatcher);
-<a class="jxr_linenumber" name="L75" href="#L75">75</a>  
-<a class="jxr_linenumber" name="L76" href="#L76">76</a>          <strong class="jxr_keyword">final</strong> IHeaderMatcher qosMatcher = <strong class="jxr_keyword">new</strong> CopyrightMatcher(<span class="jxr_string">"2004"</span>, <span class="jxr_string">"2011"</span>, <span class="jxr_string">"QOS.ch"</span>);
-<a class="jxr_linenumber" name="L77" href="#L77">77</a>          <strong class="jxr_keyword">final</strong> ILicense qosLic = <strong class="jxr_keyword">new</strong> <a name="TestingLicense" href="../../../../../org/apache/rat/testhelpers/TestingLicense.html#TestingLicense">TestingLicense</a>(<span class="jxr_string">"QOS"</span>, qosMatcher);
-<a class="jxr_linenumber" name="L78" href="#L78">78</a>  
-<a class="jxr_linenumber" name="L79" href="#L79">79</a>          IDocumentAnalyser analyser = DefaultAnalyserFactory.createDefaultAnalyser(Arrays.asList(asfLic, qosLic));
-<a class="jxr_linenumber" name="L80" href="#L80">80</a>          <strong class="jxr_keyword">final</strong> List&lt;AbstractReport&gt; reporters = <strong class="jxr_keyword">new</strong> ArrayList&lt;&gt;();
-<a class="jxr_linenumber" name="L81" href="#L81">81</a>          reporters.add(reporter);
-<a class="jxr_linenumber" name="L82" href="#L82">82</a>          report = <strong class="jxr_keyword">new</strong> ClaimReporterMultiplexer(analyser, reporters);
-<a class="jxr_linenumber" name="L83" href="#L83">83</a>      }
-<a class="jxr_linenumber" name="L84" href="#L84">84</a>  
-<a class="jxr_linenumber" name="L85" href="#L85">85</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> report(DirectoryWalker directory) <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="L86" href="#L86">86</a>          directory.run(report);
-<a class="jxr_linenumber" name="L87" href="#L87">87</a>      }
-<a class="jxr_linenumber" name="L88" href="#L88">88</a>  
-<a class="jxr_linenumber" name="L89" href="#L89">89</a>      @Test
-<a class="jxr_linenumber" name="L90" href="#L90">90</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> baseReport() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="L91" href="#L91">91</a>          <strong class="jxr_keyword">final</strong> String elementsPath = Resources.getResourceDirectory(<span class="jxr_string">"elements/Source.java"</span>);
-<a class="jxr_linenumber" name="L92" href="#L92">92</a>          DirectoryWalker directory = <strong class="jxr_keyword">new</strong> DirectoryWalker(<strong class="jxr_keyword">new</strong> File(elementsPath), IGNORE, HiddenFileFilter.HIDDEN);
-<a class="jxr_linenumber" name="L93" href="#L93">93</a>          report.startReport();
-<a class="jxr_linenumber" name="L94" href="#L94">94</a>          report(directory);
-<a class="jxr_linenumber" name="L95" href="#L95">95</a>          report.endReport();
-<a class="jxr_linenumber" name="L96" href="#L96">96</a>          writer.closeDocument();
-<a class="jxr_linenumber" name="L97" href="#L97">97</a>          <strong class="jxr_keyword">final</strong> String output = out.toString();
-<a class="jxr_linenumber" name="L98" href="#L98">98</a>          assertTrue(output.startsWith(<span class="jxr_string">"&lt;?xml version='1.0'?&gt;"</span> + <span class="jxr_string">"&lt;rat-report timestamp="</span>), <span class="jxr_string">"Preamble and document element are OK"</span>);
-<a class="jxr_linenumber" name="L99" href="#L99">99</a>          assertTrue(XmlUtils.isWellFormedXml(output),<span class="jxr_string">"Is well formed"</span>);
-<a class="jxr_linenumber" name="L100" href="#L100">100</a> 
-<a class="jxr_linenumber" name="L101" href="#L101">101</a>         XPath xPath = XPathFactory.newInstance().newXPath();
-<a class="jxr_linenumber" name="L102" href="#L102">102</a>         Document doc = XmlUtils.toDom(<strong class="jxr_keyword">new</strong> ByteArrayInputStream(out.toByteArray()));
-<a class="jxr_linenumber" name="L103" href="#L103">103</a> 
-<a class="jxr_linenumber" name="L104" href="#L104">104</a>         XmlUtils.checkNode(doc, xPath, <span class="jxr_string">"src/test/resources/elements/ILoggerFactory.java"</span>, <span class="jxr_string">"QOS"</span>, <strong class="jxr_keyword">null</strong>, <span class="jxr_string">"standard"</span>);
-<a class="jxr_linenumber" name="L105" href="#L105">105</a>         XmlUtils.checkNode(doc, xPath, <span class="jxr_string">"src/test/resources/elements/Image.png"</span>, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>, <span class="jxr_string">"binary"</span>);
-<a class="jxr_linenumber" name="L106" href="#L106">106</a>         XmlUtils.checkNode(doc, xPath, <span class="jxr_string">"src/test/resources/elements/LICENSE"</span>, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>, <span class="jxr_string">"notice"</span>);
-<a class="jxr_linenumber" name="L107" href="#L107">107</a>         XmlUtils.checkNode(doc, xPath, <span class="jxr_string">"src/test/resources/elements/NOTICE"</span>, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>, <span class="jxr_string">"notice"</span>);
-<a class="jxr_linenumber" name="L108" href="#L108">108</a>         XmlUtils.checkNode(doc, xPath, <span class="jxr_string">"src/test/resources/elements/Source.java"</span>, <span class="jxr_string">"?????"</span>, <strong class="jxr_keyword">null</strong>, <span class="jxr_string">"standard"</span>);
-<a class="jxr_linenumber" name="L109" href="#L109">109</a>         XmlUtils.checkNode(doc, xPath, <span class="jxr_string">"src/test/resources/elements/Text.txt"</span>, <span class="jxr_string">"ASF"</span>, <strong class="jxr_keyword">null</strong>, <span class="jxr_string">"standard"</span>);
-<a class="jxr_linenumber" name="L110" href="#L110">110</a>         XmlUtils.checkNode(doc, xPath, <span class="jxr_string">"src/test/resources/elements/TextHttps.txt"</span>, <span class="jxr_string">"ASF"</span>, <strong class="jxr_keyword">null</strong>, <span class="jxr_string">"standard"</span>);
-<a class="jxr_linenumber" name="L111" href="#L111">111</a>         XmlUtils.checkNode(doc, xPath, <span class="jxr_string">"src/test/resources/elements/Xml.xml"</span>, <span class="jxr_string">"ASF"</span>, <strong class="jxr_keyword">null</strong>, <span class="jxr_string">"standard"</span>);
-<a class="jxr_linenumber" name="L112" href="#L112">112</a>         XmlUtils.checkNode(doc, xPath, <span class="jxr_string">"src/test/resources/elements/buildr.rb"</span>, <span class="jxr_string">"ASF"</span>, <strong class="jxr_keyword">null</strong>, <span class="jxr_string">"standard"</span>);
-<a class="jxr_linenumber" name="L113" href="#L113">113</a>         XmlUtils.checkNode(doc, xPath, <span class="jxr_string">"src/test/resources/elements/dummy.jar"</span>, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>, <span class="jxr_string">"archive"</span>);
-<a class="jxr_linenumber" name="L114" href="#L114">114</a>         XmlUtils.checkNode(doc, xPath, <span class="jxr_string">"src/test/resources/elements/plain.json"</span>, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>, <span class="jxr_string">"binary"</span>);
-<a class="jxr_linenumber" name="L115" href="#L115">115</a>         XmlUtils.checkNode(doc, xPath, <span class="jxr_string">"src/test/resources/elements/sub/Empty.txt"</span>, <span class="jxr_string">"?????"</span>, <strong class="jxr_keyword">null</strong>, <span class="jxr_string">"standard"</span>);
-<a class="jxr_linenumber" name="L116" href="#L116">116</a>     }
-<a class="jxr_linenumber" name="L117" href="#L117">117</a> 
-<a class="jxr_linenumber" name="L118" href="#L118">118</a> }
+<a class="jxr_linenumber" name="L53" href="#L53">53</a>  <strong class="jxr_keyword">import</strong> org.apache.rat.utils.DefaultLog;
+<a class="jxr_linenumber" name="L54" href="#L54">54</a>  <strong class="jxr_keyword">import</strong> org.apache.rat.walker.DirectoryWalker;
+<a class="jxr_linenumber" name="L55" href="#L55">55</a>  <strong class="jxr_keyword">import</strong> org.junit.jupiter.api.BeforeEach;
+<a class="jxr_linenumber" name="L56" href="#L56">56</a>  <strong class="jxr_keyword">import</strong> org.junit.jupiter.api.Test;
+<a class="jxr_linenumber" name="L57" href="#L57">57</a>  <strong class="jxr_keyword">import</strong> org.w3c.dom.Document;
+<a class="jxr_linenumber" name="L58" href="#L58">58</a>  
+<a class="jxr_linenumber" name="L59" href="#L59">59</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a name="XmlReportTest" href="../../../../../org/apache/rat/report/xml/XmlReportTest.html#XmlReportTest">XmlReportTest</a> {
+<a class="jxr_linenumber" name="L60" href="#L60">60</a>  
+<a class="jxr_linenumber" name="L61" href="#L61">61</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Pattern IGNORE = Pattern.compile(<span class="jxr_string">".svn"</span>);
+<a class="jxr_linenumber" name="L62" href="#L62">62</a>      <strong class="jxr_keyword">private</strong> ByteArrayOutputStream out;
+<a class="jxr_linenumber" name="L63" href="#L63">63</a>      <strong class="jxr_keyword">private</strong> IXmlWriter writer;
+<a class="jxr_linenumber" name="L64" href="#L64">64</a>      <strong class="jxr_keyword">private</strong> RatReport report;
+<a class="jxr_linenumber" name="L65" href="#L65">65</a>  
+<a class="jxr_linenumber" name="L66" href="#L66">66</a>      @BeforeEach
+<a class="jxr_linenumber" name="L67" href="#L67">67</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setUp() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="L68" href="#L68">68</a>          out = <strong class="jxr_keyword">new</strong> ByteArrayOutputStream();
+<a class="jxr_linenumber" name="L69" href="#L69">69</a>          writer = <strong class="jxr_keyword">new</strong> XmlWriter(<strong class="jxr_keyword">new</strong> BufferedWriter(<strong class="jxr_keyword">new</strong> OutputStreamWriter(out)));
+<a class="jxr_linenumber" name="L70" href="#L70">70</a>          writer.startDocument();
+<a class="jxr_linenumber" name="L71" href="#L71">71</a>          <strong class="jxr_keyword">final</strong> SimpleXmlClaimReporter reporter = <strong class="jxr_keyword">new</strong> SimpleXmlClaimReporter(writer);
+<a class="jxr_linenumber" name="L72" href="#L72">72</a>          <strong class="jxr_keyword">final</strong> IHeaderMatcher asf1Matcher = <strong class="jxr_keyword">new</strong> SimpleTextMatcher(<span class="jxr_string">"http://www.apache.org/licenses/LICENSE-2.0"</span>);
+<a class="jxr_linenumber" name="L73" href="#L73">73</a>          <strong class="jxr_keyword">final</strong> IHeaderMatcher asf2Matcher = <strong class="jxr_keyword">new</strong> SimpleTextMatcher(<span class="jxr_string">"https://www.apache.org/licenses/LICENSE-2.0.txt"</span>);
+<a class="jxr_linenumber" name="L74" href="#L74">74</a>          <strong class="jxr_keyword">final</strong> IHeaderMatcher asfMatcher = <strong class="jxr_keyword">new</strong> OrMatcher(Arrays.asList(asf1Matcher, asf2Matcher));
+<a class="jxr_linenumber" name="L75" href="#L75">75</a>          <strong class="jxr_keyword">final</strong> ILicense asfLic = <strong class="jxr_keyword">new</strong> <a name="TestingLicense" href="../../../../../org/apache/rat/testhelpers/TestingLicense.html#TestingLicense">TestingLicense</a>(<span class="jxr_string">"ASF"</span>, asfMatcher);
+<a class="jxr_linenumber" name="L76" href="#L76">76</a>  
+<a class="jxr_linenumber" name="L77" href="#L77">77</a>          <strong class="jxr_keyword">final</strong> IHeaderMatcher qosMatcher = <strong class="jxr_keyword">new</strong> CopyrightMatcher(<span class="jxr_string">"2004"</span>, <span class="jxr_string">"2011"</span>, <span class="jxr_string">"QOS.ch"</span>);
+<a class="jxr_linenumber" name="L78" href="#L78">78</a>          <strong class="jxr_keyword">final</strong> ILicense qosLic = <strong class="jxr_keyword">new</strong> <a name="TestingLicense" href="../../../../../org/apache/rat/testhelpers/TestingLicense.html#TestingLicense">TestingLicense</a>(<span class="jxr_string">"QOS"</span>, qosMatcher);
+<a class="jxr_linenumber" name="L79" href="#L79">79</a>  
+<a class="jxr_linenumber" name="L80" href="#L80">80</a>          IDocumentAnalyser analyser = DefaultAnalyserFactory.createDefaultAnalyser(DefaultLog.INSTANCE,Arrays.asList(asfLic, qosLic));
+<a class="jxr_linenumber" name="L81" href="#L81">81</a>          <strong class="jxr_keyword">final</strong> List&lt;AbstractReport&gt; reporters = <strong class="jxr_keyword">new</strong> ArrayList&lt;&gt;();
+<a class="jxr_linenumber" name="L82" href="#L82">82</a>          reporters.add(reporter);
+<a class="jxr_linenumber" name="L83" href="#L83">83</a>          report = <strong class="jxr_keyword">new</strong> ClaimReporterMultiplexer(analyser, reporters);
+<a class="jxr_linenumber" name="L84" href="#L84">84</a>      }
+<a class="jxr_linenumber" name="L85" href="#L85">85</a>  
+<a class="jxr_linenumber" name="L86" href="#L86">86</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> report(DirectoryWalker directory) <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="L87" href="#L87">87</a>          directory.run(report);
+<a class="jxr_linenumber" name="L88" href="#L88">88</a>      }
+<a class="jxr_linenumber" name="L89" href="#L89">89</a>  
+<a class="jxr_linenumber" name="L90" href="#L90">90</a>      @Test
+<a class="jxr_linenumber" name="L91" href="#L91">91</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> baseReport() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="L92" href="#L92">92</a>          <strong class="jxr_keyword">final</strong> String elementsPath = Resources.getResourceDirectory(<span class="jxr_string">"elements/Source.java"</span>);
+<a class="jxr_linenumber" name="L93" href="#L93">93</a>          DirectoryWalker directory = <strong class="jxr_keyword">new</strong> DirectoryWalker(<strong class="jxr_keyword">new</strong> File(elementsPath), IGNORE, HiddenFileFilter.HIDDEN);
+<a class="jxr_linenumber" name="L94" href="#L94">94</a>          report.startReport();
+<a class="jxr_linenumber" name="L95" href="#L95">95</a>          report(directory);
+<a class="jxr_linenumber" name="L96" href="#L96">96</a>          report.endReport();
+<a class="jxr_linenumber" name="L97" href="#L97">97</a>          writer.closeDocument();
+<a class="jxr_linenumber" name="L98" href="#L98">98</a>          <strong class="jxr_keyword">final</strong> String output = out.toString();
+<a class="jxr_linenumber" name="L99" href="#L99">99</a>          assertTrue(output.startsWith(<span class="jxr_string">"&lt;?xml version='1.0'?&gt;"</span> + <span class="jxr_string">"&lt;rat-report timestamp="</span>), <span class="jxr_string">"Preamble and document element are OK"</span>);
+<a class="jxr_linenumber" name="L100" href="#L100">100</a>         assertTrue(XmlUtils.isWellFormedXml(output),<span class="jxr_string">"Is well formed"</span>);
+<a class="jxr_linenumber" name="L101" href="#L101">101</a> 
+<a class="jxr_linenumber" name="L102" href="#L102">102</a>         XPath xPath = XPathFactory.newInstance().newXPath();
+<a class="jxr_linenumber" name="L103" href="#L103">103</a>         Document doc = XmlUtils.toDom(<strong class="jxr_keyword">new</strong> ByteArrayInputStream(out.toByteArray()));
+<a class="jxr_linenumber" name="L104" href="#L104">104</a> 
+<a class="jxr_linenumber" name="L105" href="#L105">105</a>         XmlUtils.checkNode(doc, xPath, <span class="jxr_string">"src/test/resources/elements/ILoggerFactory.java"</span>, <span class="jxr_string">"QOS"</span>, <strong class="jxr_keyword">null</strong>, <span class="jxr_string">"standard"</span>);
+<a class="jxr_linenumber" name="L106" href="#L106">106</a>         XmlUtils.checkNode(doc, xPath, <span class="jxr_string">"src/test/resources/elements/Image.png"</span>, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>, <span class="jxr_string">"binary"</span>);
+<a class="jxr_linenumber" name="L107" href="#L107">107</a>         XmlUtils.checkNode(doc, xPath, <span class="jxr_string">"src/test/resources/elements/LICENSE"</span>, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>, <span class="jxr_string">"notice"</span>);
+<a class="jxr_linenumber" name="L108" href="#L108">108</a>         XmlUtils.checkNode(doc, xPath, <span class="jxr_string">"src/test/resources/elements/NOTICE"</span>, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>, <span class="jxr_string">"notice"</span>);
+<a class="jxr_linenumber" name="L109" href="#L109">109</a>         XmlUtils.checkNode(doc, xPath, <span class="jxr_string">"src/test/resources/elements/Source.java"</span>, <span class="jxr_string">"?????"</span>, <strong class="jxr_keyword">null</strong>, <span class="jxr_string">"standard"</span>);
+<a class="jxr_linenumber" name="L110" href="#L110">110</a>         XmlUtils.checkNode(doc, xPath, <span class="jxr_string">"src/test/resources/elements/Text.txt"</span>, <span class="jxr_string">"ASF"</span>, <strong class="jxr_keyword">null</strong>, <span class="jxr_string">"standard"</span>);
+<a class="jxr_linenumber" name="L111" href="#L111">111</a>         XmlUtils.checkNode(doc, xPath, <span class="jxr_string">"src/test/resources/elements/TextHttps.txt"</span>, <span class="jxr_string">"ASF"</span>, <strong class="jxr_keyword">null</strong>, <span class="jxr_string">"standard"</span>);
+<a class="jxr_linenumber" name="L112" href="#L112">112</a>         XmlUtils.checkNode(doc, xPath, <span class="jxr_string">"src/test/resources/elements/Xml.xml"</span>, <span class="jxr_string">"ASF"</span>, <strong class="jxr_keyword">null</strong>, <span class="jxr_string">"standard"</span>);
+<a class="jxr_linenumber" name="L113" href="#L113">113</a>         XmlUtils.checkNode(doc, xPath, <span class="jxr_string">"src/test/resources/elements/buildr.rb"</span>, <span class="jxr_string">"ASF"</span>, <strong class="jxr_keyword">null</strong>, <span class="jxr_string">"standard"</span>);
+<a class="jxr_linenumber" name="L114" href="#L114">114</a>         XmlUtils.checkNode(doc, xPath, <span class="jxr_string">"src/test/resources/elements/dummy.jar"</span>, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>, <span class="jxr_string">"archive"</span>);
+<a class="jxr_linenumber" name="L115" href="#L115">115</a>         XmlUtils.checkNode(doc, xPath, <span class="jxr_string">"src/test/resources/elements/plain.json"</span>, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>, <span class="jxr_string">"binary"</span>);
+<a class="jxr_linenumber" name="L116" href="#L116">116</a>         XmlUtils.checkNode(doc, xPath, <span class="jxr_string">"src/test/resources/elements/sub/Empty.txt"</span>, <span class="jxr_string">"?????"</span>, <strong class="jxr_keyword">null</strong>, <span class="jxr_string">"standard"</span>);
+<a class="jxr_linenumber" name="L117" href="#L117">117</a>     }
+<a class="jxr_linenumber" name="L118" href="#L118">118</a> 
+<a class="jxr_linenumber" name="L119" href="#L119">119</a> }
 </pre>
 <hr/>
 <div id="footer">Copyright &#169; 2006&#x2013;2024 <a href="https://www.apache.org">Apache Software Foundation</a>. All rights reserved.</div>
diff --git a/rat0161/apache-rat-core/xref/org/apache/rat/Report.html b/rat0161/apache-rat-core/xref/org/apache/rat/Report.html
index eda7d58d..321600f5 100644
--- a/rat0161/apache-rat-core/xref/org/apache/rat/Report.html
+++ b/rat0161/apache-rat-core/xref/org/apache/rat/Report.html
@@ -134,302 +134,301 @@
 <a class="jxr_linenumber" name="L126" href="#L126">126</a> <em class="jxr_javadoccomment">     */</em>
 <a class="jxr_linenumber" name="L127" href="#L127">127</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> main(String[] args) <strong class="jxr_keyword">throws</strong> Exception {
 <a class="jxr_linenumber" name="L128" href="#L128">128</a>         Options opts = buildOptions();
-<a class="jxr_linenumber" name="L129" href="#L129">129</a> 
-<a class="jxr_linenumber" name="L130" href="#L130">130</a>         CommandLine cl;
-<a class="jxr_linenumber" name="L131" href="#L131">131</a>         <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="L132" href="#L132">132</a>             cl = <strong class="jxr_keyword">new</strong> DefaultParser().parse(opts, args);
-<a class="jxr_linenumber" name="L133" href="#L133">133</a>         } <strong class="jxr_keyword">catch</strong> (ParseException e) {
-<a class="jxr_linenumber" name="L134" href="#L134">134</a>             System.err.println(e.getMessage());
-<a class="jxr_linenumber" name="L135" href="#L135">135</a>             System.err.println(<span class="jxr_string">"Please use the \&quot;--help\&quot; option to see a list of valid commands and options"</span>);
-<a class="jxr_linenumber" name="L136" href="#L136">136</a>             System.exit(1);
-<a class="jxr_linenumber" name="L137" href="#L137">137</a>             <strong class="jxr_keyword">return</strong>; <em class="jxr_comment">// dummy return (won't be reached) to avoid Eclipse complaint about possible NPE</em>
-<a class="jxr_linenumber" name="L138" href="#L138">138</a>                     <em class="jxr_comment">// for "cl"</em>
-<a class="jxr_linenumber" name="L139" href="#L139">139</a>         }
-<a class="jxr_linenumber" name="L140" href="#L140">140</a> 
-<a class="jxr_linenumber" name="L141" href="#L141">141</a>         <strong class="jxr_keyword">if</strong> (cl.hasOption(HELP)) {
-<a class="jxr_linenumber" name="L142" href="#L142">142</a>             printUsage(opts);
-<a class="jxr_linenumber" name="L143" href="#L143">143</a>         }
-<a class="jxr_linenumber" name="L144" href="#L144">144</a> 
-<a class="jxr_linenumber" name="L145" href="#L145">145</a>         args = cl.getArgs();
-<a class="jxr_linenumber" name="L146" href="#L146">146</a>         <strong class="jxr_keyword">if</strong> (args == <strong class="jxr_keyword">null</strong> || args.length != 1) {
-<a class="jxr_linenumber" name="L147" href="#L147">147</a>             printUsage(opts);
-<a class="jxr_linenumber" name="L148" href="#L148">148</a>         } <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="L149" href="#L149">149</a>             <a name="ReportConfiguration" href="../../../org/apache/rat/ReportConfiguration.html#ReportConfiguration">ReportConfiguration</a> configuration = createConfiguration(args[0], cl);
-<a class="jxr_linenumber" name="L150" href="#L150">150</a>             configuration.validate(System.err::println);
-<a class="jxr_linenumber" name="L151" href="#L151">151</a> 
-<a class="jxr_linenumber" name="L152" href="#L152">152</a>             <strong class="jxr_keyword">boolean</strong> dryRun = false;
-<a class="jxr_linenumber" name="L153" href="#L153">153</a>             
-<a class="jxr_linenumber" name="L154" href="#L154">154</a>             <strong class="jxr_keyword">if</strong> (cl.hasOption(LIST_FAMILIES)) {
-<a class="jxr_linenumber" name="L155" href="#L155">155</a>                 LicenseFilter f = LicenseFilter.fromText(cl.getOptionValue(LIST_FAMILIES));
-<a class="jxr_linenumber" name="L156" href="#L156">156</a>                 <strong class="jxr_keyword">if</strong> (f != LicenseFilter.none) {                        
-<a class="jxr_linenumber" name="L157" href="#L157">157</a>                     dryRun = <strong class="jxr_keyword">true</strong>;
-<a class="jxr_linenumber" name="L158" href="#L158">158</a>                     Reporter.listLicenseFamilies(configuration, f);
-<a class="jxr_linenumber" name="L159" href="#L159">159</a>                 }
-<a class="jxr_linenumber" name="L160" href="#L160">160</a>             }
-<a class="jxr_linenumber" name="L161" href="#L161">161</a>             <strong class="jxr_keyword">if</strong> (cl.hasOption(LIST_LICENSES)) {
-<a class="jxr_linenumber" name="L162" href="#L162">162</a>                 LicenseFilter f = LicenseFilter.fromText(cl.getOptionValue(LIST_LICENSES));
-<a class="jxr_linenumber" name="L163" href="#L163">163</a>                 <strong class="jxr_keyword">if</strong> (f != LicenseFilter.none) {                        
-<a class="jxr_linenumber" name="L164" href="#L164">164</a>                     dryRun = <strong class="jxr_keyword">true</strong>;
-<a class="jxr_linenumber" name="L165" href="#L165">165</a>                     Reporter.listLicenses(configuration, f);
-<a class="jxr_linenumber" name="L166" href="#L166">166</a>                 }
-<a class="jxr_linenumber" name="L167" href="#L167">167</a>             }
-<a class="jxr_linenumber" name="L168" href="#L168">168</a>             
-<a class="jxr_linenumber" name="L169" href="#L169">169</a>             <strong class="jxr_keyword">if</strong> (!dryRun) {
-<a class="jxr_linenumber" name="L170" href="#L170">170</a>                 Reporter.report(configuration);
-<a class="jxr_linenumber" name="L171" href="#L171">171</a>             }
-<a class="jxr_linenumber" name="L172" href="#L172">172</a>         }
-<a class="jxr_linenumber" name="L173" href="#L173">173</a>     }
-<a class="jxr_linenumber" name="L174" href="#L174">174</a> 
-<a class="jxr_linenumber" name="L175" href="#L175">175</a>     <strong class="jxr_keyword">static</strong> <a name="ReportConfiguration" href="../../../org/apache/rat/ReportConfiguration.html#ReportConfiguration">ReportConfiguration</a> createConfiguration(String baseDirectory, CommandLine cl) <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="L176" href="#L176">176</a>         <strong class="jxr_keyword">final</strong> <a name="ReportConfiguration" href="../../../org/apache/rat/ReportConfiguration.html#ReportConfiguration">ReportConfiguration</a> configuration = <strong class="jxr_keyword">new</strong> <a name="ReportConfiguration" href="../../../org/apache/rat/ReportConfiguration.html#ReportConfiguration">ReportConfiguration</a>(DefaultLog.INSTANCE);
-<a class="jxr_linenumber" name="L177" href="#L177">177</a> 
-<a class="jxr_linenumber" name="L178" href="#L178">178</a>         <strong class="jxr_keyword">if</strong> (cl.hasOption('o')) {
-<a class="jxr_linenumber" name="L179" href="#L179">179</a>             configuration.setOut(<strong class="jxr_keyword">new</strong> File(cl.getOptionValue('o')));
-<a class="jxr_linenumber" name="L180" href="#L180">180</a>         }
-<a class="jxr_linenumber" name="L181" href="#L181">181</a> 
-<a class="jxr_linenumber" name="L182" href="#L182">182</a>         <strong class="jxr_keyword">if</strong> (cl.hasOption(SCAN_HIDDEN_DIRECTORIES)) {
-<a class="jxr_linenumber" name="L183" href="#L183">183</a>             configuration.setDirectoryFilter(<strong class="jxr_keyword">null</strong>);
-<a class="jxr_linenumber" name="L184" href="#L184">184</a>         }
-<a class="jxr_linenumber" name="L185" href="#L185">185</a> 
-<a class="jxr_linenumber" name="L186" href="#L186">186</a>         <strong class="jxr_keyword">if</strong> (cl.hasOption('a') || cl.hasOption('A')) {
-<a class="jxr_linenumber" name="L187" href="#L187">187</a>             configuration.setAddLicenseHeaders(cl.hasOption('f') ? AddLicenseHeaders.FORCED : AddLicenseHeaders.TRUE);
-<a class="jxr_linenumber" name="L188" href="#L188">188</a>             configuration.setCopyrightMessage(cl.getOptionValue(<span class="jxr_string">"c"</span>));
-<a class="jxr_linenumber" name="L189" href="#L189">189</a>         }
-<a class="jxr_linenumber" name="L190" href="#L190">190</a> 
-<a class="jxr_linenumber" name="L191" href="#L191">191</a>         <strong class="jxr_keyword">if</strong> (cl.hasOption(EXCLUDE_CLI)) {
-<a class="jxr_linenumber" name="L192" href="#L192">192</a>             String[] excludes = cl.getOptionValues(EXCLUDE_CLI);
-<a class="jxr_linenumber" name="L193" href="#L193">193</a>             <strong class="jxr_keyword">if</strong> (excludes != <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="L194" href="#L194">194</a>                 <strong class="jxr_keyword">final</strong> FilenameFilter filter = parseExclusions(Arrays.asList(excludes));
-<a class="jxr_linenumber" name="L195" href="#L195">195</a>                 configuration.setInputFileFilter(filter);
-<a class="jxr_linenumber" name="L196" href="#L196">196</a>             }
-<a class="jxr_linenumber" name="L197" href="#L197">197</a>         } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (cl.hasOption(EXCLUDE_FILE_CLI)) {
-<a class="jxr_linenumber" name="L198" href="#L198">198</a>             String excludeFileName = cl.getOptionValue(EXCLUDE_FILE_CLI);
-<a class="jxr_linenumber" name="L199" href="#L199">199</a>             <strong class="jxr_keyword">if</strong> (excludeFileName != <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="L200" href="#L200">200</a>                 <strong class="jxr_keyword">final</strong> FilenameFilter filter = parseExclusions(
-<a class="jxr_linenumber" name="L201" href="#L201">201</a>                         FileUtils.readLines(<strong class="jxr_keyword">new</strong> File(excludeFileName), StandardCharsets.UTF_8));
-<a class="jxr_linenumber" name="L202" href="#L202">202</a>                 configuration.setInputFileFilter(filter);
-<a class="jxr_linenumber" name="L203" href="#L203">203</a>             }
-<a class="jxr_linenumber" name="L204" href="#L204">204</a>         }
-<a class="jxr_linenumber" name="L205" href="#L205">205</a> 
-<a class="jxr_linenumber" name="L206" href="#L206">206</a>         <strong class="jxr_keyword">if</strong> (cl.hasOption(XML)) {
-<a class="jxr_linenumber" name="L207" href="#L207">207</a>             configuration.setStyleReport(false);
-<a class="jxr_linenumber" name="L208" href="#L208">208</a>         } <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="L209" href="#L209">209</a>             configuration.setStyleReport(<strong class="jxr_keyword">true</strong>);
-<a class="jxr_linenumber" name="L210" href="#L210">210</a>             <strong class="jxr_keyword">if</strong> (cl.hasOption(STYLESHEET_CLI)) {
-<a class="jxr_linenumber" name="L211" href="#L211">211</a>                 String[] style = cl.getOptionValues(STYLESHEET_CLI);
-<a class="jxr_linenumber" name="L212" href="#L212">212</a>                 <strong class="jxr_keyword">if</strong> (style.length != 1) {
-<a class="jxr_linenumber" name="L213" href="#L213">213</a>                     System.err.println(<span class="jxr_string">"Please specify a single stylesheet"</span>);
-<a class="jxr_linenumber" name="L214" href="#L214">214</a>                     System.exit(1);
-<a class="jxr_linenumber" name="L215" href="#L215">215</a>                 }
-<a class="jxr_linenumber" name="L216" href="#L216">216</a>                 configuration.setStyleSheet(() -&gt; Files.newInputStream(Paths.get(style[0])));
-<a class="jxr_linenumber" name="L217" href="#L217">217</a>             }
-<a class="jxr_linenumber" name="L218" href="#L218">218</a>         }
-<a class="jxr_linenumber" name="L219" href="#L219">219</a> 
-<a class="jxr_linenumber" name="L220" href="#L220">220</a>         Defaults.Builder defaultBuilder = Defaults.builder();
-<a class="jxr_linenumber" name="L221" href="#L221">221</a>         <strong class="jxr_keyword">if</strong> (cl.hasOption(NO_DEFAULTS)) {
-<a class="jxr_linenumber" name="L222" href="#L222">222</a>             defaultBuilder.noDefault();
-<a class="jxr_linenumber" name="L223" href="#L223">223</a>         }
-<a class="jxr_linenumber" name="L224" href="#L224">224</a>         <strong class="jxr_keyword">if</strong> (cl.hasOption(LICENSES)) {
-<a class="jxr_linenumber" name="L225" href="#L225">225</a>             <strong class="jxr_keyword">for</strong> (String fn : cl.getOptionValues(LICENSES)) {
-<a class="jxr_linenumber" name="L226" href="#L226">226</a>                 defaultBuilder.add(fn);
-<a class="jxr_linenumber" name="L227" href="#L227">227</a>             }
-<a class="jxr_linenumber" name="L228" href="#L228">228</a>         }
-<a class="jxr_linenumber" name="L229" href="#L229">229</a>         <a name="Defaults" href="../../../org/apache/rat/Defaults.html#Defaults">Defaults</a> defaults = defaultBuilder.build();
-<a class="jxr_linenumber" name="L230" href="#L230">230</a>         configuration.setFrom(defaults);
-<a class="jxr_linenumber" name="L231" href="#L231">231</a>         configuration.setReportable(getDirectory(baseDirectory, configuration));
-<a class="jxr_linenumber" name="L232" href="#L232">232</a>         <strong class="jxr_keyword">return</strong> configuration;
-<a class="jxr_linenumber" name="L233" href="#L233">233</a>     }
-<a class="jxr_linenumber" name="L234" href="#L234">234</a>     
-<a class="jxr_linenumber" name="L235" href="#L235">235</a>     <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L236" href="#L236">236</a> <em class="jxr_javadoccomment">     * Creates a filename filter from patterns to exclude.</em>
-<a class="jxr_linenumber" name="L237" href="#L237">237</a> <em class="jxr_javadoccomment">     * </em>
-<a class="jxr_linenumber" name="L238" href="#L238">238</a> <em class="jxr_javadoccomment">     * @param excludes the list of patterns to exclude.</em>
-<a class="jxr_linenumber" name="L239" href="#L239">239</a> <em class="jxr_javadoccomment">     * @return the FilenameFilter tht excludes the patterns</em>
-<a class="jxr_linenumber" name="L240" href="#L240">240</a> <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="L241" href="#L241">241</a>     <strong class="jxr_keyword">static</strong> FilenameFilter parseExclusions(List&lt;String&gt; excludes) {
-<a class="jxr_linenumber" name="L242" href="#L242">242</a>         <strong class="jxr_keyword">final</strong> OrFileFilter orFilter = <strong class="jxr_keyword">new</strong> OrFileFilter();
-<a class="jxr_linenumber" name="L243" href="#L243">243</a>         <strong class="jxr_keyword">int</strong> ignoredLines = 0;
-<a class="jxr_linenumber" name="L244" href="#L244">244</a>         <strong class="jxr_keyword">for</strong> (String exclude : excludes) {
-<a class="jxr_linenumber" name="L245" href="#L245">245</a>             <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="L246" href="#L246">246</a>                 <em class="jxr_comment">// skip comments</em>
-<a class="jxr_linenumber" name="L247" href="#L247">247</a>                 <strong class="jxr_keyword">if</strong> (exclude.startsWith(<span class="jxr_string">"#"</span>) || StringUtils.isEmpty(exclude)) {
-<a class="jxr_linenumber" name="L248" href="#L248">248</a>                     ignoredLines++;
-<a class="jxr_linenumber" name="L249" href="#L249">249</a>                     <strong class="jxr_keyword">continue</strong>;
-<a class="jxr_linenumber" name="L250" href="#L250">250</a>                 }
-<a class="jxr_linenumber" name="L251" href="#L251">251</a> 
-<a class="jxr_linenumber" name="L252" href="#L252">252</a>                 String exclusion = exclude.trim();
-<a class="jxr_linenumber" name="L253" href="#L253">253</a>                 <em class="jxr_comment">// interpret given patterns as regular expression, direct file names or</em>
-<a class="jxr_linenumber" name="L254" href="#L254">254</a>                 <em class="jxr_comment">// wildcards to give users more choices to configure exclusions</em>
-<a class="jxr_linenumber" name="L255" href="#L255">255</a>                 orFilter.addFileFilter(<strong class="jxr_keyword">new</strong> RegexFileFilter(exclusion));
-<a class="jxr_linenumber" name="L256" href="#L256">256</a>                 orFilter.addFileFilter(<strong class="jxr_keyword">new</strong> NameFileFilter(exclusion));
-<a class="jxr_linenumber" name="L257" href="#L257">257</a>                 orFilter.addFileFilter(WildcardFileFilter.builder().setWildcards(exclusion).get());
-<a class="jxr_linenumber" name="L258" href="#L258">258</a>             } <strong class="jxr_keyword">catch</strong> (PatternSyntaxException e) {
-<a class="jxr_linenumber" name="L259" href="#L259">259</a>                 System.err.println(<span class="jxr_string">"Will skip given exclusion '"</span> + exclude + <span class="jxr_string">"' due to "</span> + e);
-<a class="jxr_linenumber" name="L260" href="#L260">260</a>             }
-<a class="jxr_linenumber" name="L261" href="#L261">261</a>         }
-<a class="jxr_linenumber" name="L262" href="#L262">262</a>         System.err.println(<span class="jxr_string">"Ignored "</span> + ignoredLines + <span class="jxr_string">" lines in your exclusion files as comments or empty lines."</span>);
-<a class="jxr_linenumber" name="L263" href="#L263">263</a>         <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> NotFileFilter(orFilter);
-<a class="jxr_linenumber" name="L264" href="#L264">264</a>     }
-<a class="jxr_linenumber" name="L265" href="#L265">265</a> 
-<a class="jxr_linenumber" name="L266" href="#L266">266</a>     <strong class="jxr_keyword">static</strong> Options buildOptions() {
-<a class="jxr_linenumber" name="L267" href="#L267">267</a>         String licFilterValues = String.join(<span class="jxr_string">", "</span>, 
-<a class="jxr_linenumber" name="L268" href="#L268">268</a>                 Arrays.stream(LicenseFilter.values()).map(LicenseFilter::name).collect(Collectors.toList()));
-<a class="jxr_linenumber" name="L269" href="#L269">269</a> 
-<a class="jxr_linenumber" name="L270" href="#L270">270</a>         Options opts = <strong class="jxr_keyword">new</strong> Options()
-<a class="jxr_linenumber" name="L271" href="#L271">271</a>         
-<a class="jxr_linenumber" name="L272" href="#L272">272</a>         .addOption(
-<a class="jxr_linenumber" name="L273" href="#L273">273</a>                 Option.builder().hasArg(<strong class="jxr_keyword">true</strong>).longOpt(LIST_FAMILIES)
-<a class="jxr_linenumber" name="L274" href="#L274">274</a>                 .desc(<span class="jxr_string">"List the defined license families (default is none). Valid options are: "</span>+licFilterValues+<span class="jxr_string">"."</span>)
-<a class="jxr_linenumber" name="L275" href="#L275">275</a>                 .build())
-<a class="jxr_linenumber" name="L276" href="#L276">276</a>         .addOption(
-<a class="jxr_linenumber" name="L277" href="#L277">277</a>                 Option.builder().hasArg(<strong class="jxr_keyword">true</strong>).longOpt(LIST_LICENSES)
-<a class="jxr_linenumber" name="L278" href="#L278">278</a>                 .desc(<span class="jxr_string">"List the defined licenses (default is none). Valid options are: "</span>+licFilterValues+<span class="jxr_string">"."</span>)
-<a class="jxr_linenumber" name="L279" href="#L279">279</a>                 .build())
-<a class="jxr_linenumber" name="L280" href="#L280">280</a> 
-<a class="jxr_linenumber" name="L281" href="#L281">281</a>         .addOption(<strong class="jxr_keyword">new</strong> Option(HELP, <span class="jxr_string">"help"</span>, false, <span class="jxr_string">"Print help for the RAT command line interface and exit."</span>));
-<a class="jxr_linenumber" name="L282" href="#L282">282</a>         
-<a class="jxr_linenumber" name="L283" href="#L283">283</a> 
-<a class="jxr_linenumber" name="L284" href="#L284">284</a>         Option out = <strong class="jxr_keyword">new</strong> Option(<span class="jxr_string">"o"</span>, <span class="jxr_string">"out"</span>, <strong class="jxr_keyword">true</strong>,
-<a class="jxr_linenumber" name="L285" href="#L285">285</a>                 <span class="jxr_string">"Define the output file where to write a report to (default is System.out)."</span>);
-<a class="jxr_linenumber" name="L286" href="#L286">286</a>         opts.addOption(out);
-<a class="jxr_linenumber" name="L287" href="#L287">287</a> 
-<a class="jxr_linenumber" name="L288" href="#L288">288</a>         String defaultHandlingText = <span class="jxr_string">" By default all approved default licenses are used"</span>;
-<a class="jxr_linenumber" name="L289" href="#L289">289</a>         Option noDefaults = <strong class="jxr_keyword">new</strong> Option(<strong class="jxr_keyword">null</strong>, NO_DEFAULTS, false, <span class="jxr_string">"Ignore default configuration."</span> + defaultHandlingText);
-<a class="jxr_linenumber" name="L290" href="#L290">290</a>         opts.addOption(noDefaults);
-<a class="jxr_linenumber" name="L291" href="#L291">291</a> 
-<a class="jxr_linenumber" name="L292" href="#L292">292</a>         opts.addOption(<strong class="jxr_keyword">null</strong>, LICENSES, <strong class="jxr_keyword">true</strong>, <span class="jxr_string">"File names or URLs for license definitions"</span>);
-<a class="jxr_linenumber" name="L293" href="#L293">293</a>         opts.addOption(<strong class="jxr_keyword">null</strong>, SCAN_HIDDEN_DIRECTORIES, false, <span class="jxr_string">"Scan hidden directories"</span>);
-<a class="jxr_linenumber" name="L294" href="#L294">294</a> 
-<a class="jxr_linenumber" name="L295" href="#L295">295</a>         OptionGroup addLicenseGroup = <strong class="jxr_keyword">new</strong> OptionGroup();
-<a class="jxr_linenumber" name="L296" href="#L296">296</a>         String addLicenseDesc = <span class="jxr_string">"Add the default license header to any file with an unknown license that is not in the exclusion list. "</span>
-<a class="jxr_linenumber" name="L297" href="#L297">297</a>                 + <span class="jxr_string">"By default new files will be created with the license header, "</span>
-<a class="jxr_linenumber" name="L298" href="#L298">298</a>                 + <span class="jxr_string">"to force the modification of existing files use the --force option."</span>;
-<a class="jxr_linenumber" name="L299" href="#L299">299</a> 
-<a class="jxr_linenumber" name="L300" href="#L300">300</a>         <em class="jxr_comment">// RAT-85/RAT-203: Deprecated! added only for convenience and for backwards</em>
-<a class="jxr_linenumber" name="L301" href="#L301">301</a>         <em class="jxr_comment">// compatibility</em>
-<a class="jxr_linenumber" name="L302" href="#L302">302</a>         Option addLicence = <strong class="jxr_keyword">new</strong> Option(ADD_OLD, <span class="jxr_string">"addLicence"</span>, false, addLicenseDesc);
-<a class="jxr_linenumber" name="L303" href="#L303">303</a>         addLicenseGroup.addOption(addLicence);
-<a class="jxr_linenumber" name="L304" href="#L304">304</a>         Option addLicense = <strong class="jxr_keyword">new</strong> Option(ADD, <span class="jxr_string">"addLicense"</span>, false, addLicenseDesc);
-<a class="jxr_linenumber" name="L305" href="#L305">305</a>         addLicenseGroup.addOption(addLicense);
-<a class="jxr_linenumber" name="L306" href="#L306">306</a>         opts.addOptionGroup(addLicenseGroup);
-<a class="jxr_linenumber" name="L307" href="#L307">307</a> 
-<a class="jxr_linenumber" name="L308" href="#L308">308</a>         Option write = <strong class="jxr_keyword">new</strong> Option(FORCE, <span class="jxr_string">"force"</span>, false,
-<a class="jxr_linenumber" name="L309" href="#L309">309</a>                 <span class="jxr_string">"Forces any changes in files to be written directly to the source files (i.e. new files are not created)."</span>);
-<a class="jxr_linenumber" name="L310" href="#L310">310</a>         opts.addOption(write);
-<a class="jxr_linenumber" name="L311" href="#L311">311</a> 
-<a class="jxr_linenumber" name="L312" href="#L312">312</a>         Option copyright = <strong class="jxr_keyword">new</strong> Option(COPYRIGHT, <span class="jxr_string">"copyright"</span>, <strong class="jxr_keyword">true</strong>,
-<a class="jxr_linenumber" name="L313" href="#L313">313</a>                 <span class="jxr_string">"The copyright message to use in the license headers, usually in the form of \&quot;Copyright 2008 Foo\&quot;"</span>);
-<a class="jxr_linenumber" name="L314" href="#L314">314</a>         opts.addOption(copyright);
-<a class="jxr_linenumber" name="L315" href="#L315">315</a> 
-<a class="jxr_linenumber" name="L316" href="#L316">316</a>         <strong class="jxr_keyword">final</strong> Option exclude = Option.builder(EXCLUDE_CLI).argName(<span class="jxr_string">"expression"</span>).longOpt(<span class="jxr_string">"exclude"</span>).hasArgs()
-<a class="jxr_linenumber" name="L317" href="#L317">317</a>                 .desc(<span class="jxr_string">"Excludes files matching wildcard &lt;expression&gt;. "</span>
-<a class="jxr_linenumber" name="L318" href="#L318">318</a>                         + <span class="jxr_string">"Note that --dir is required when using this parameter. "</span> + <span class="jxr_string">"Allows multiple arguments."</span>)
-<a class="jxr_linenumber" name="L319" href="#L319">319</a>                 .build();
-<a class="jxr_linenumber" name="L320" href="#L320">320</a>         opts.addOption(exclude);
-<a class="jxr_linenumber" name="L321" href="#L321">321</a> 
-<a class="jxr_linenumber" name="L322" href="#L322">322</a>         <strong class="jxr_keyword">final</strong> Option excludeFile = Option.builder(EXCLUDE_FILE_CLI).argName(<span class="jxr_string">"fileName"</span>).longOpt(<span class="jxr_string">"exclude-file"</span>)
-<a class="jxr_linenumber" name="L323" href="#L323">323</a>                 .hasArgs().desc(<span class="jxr_string">"Excludes files matching regular expression in &lt;file&gt; "</span>
-<a class="jxr_linenumber" name="L324" href="#L324">324</a>                         + <span class="jxr_string">"Note that --dir is required when using this parameter. "</span>)
-<a class="jxr_linenumber" name="L325" href="#L325">325</a>                 .build();
-<a class="jxr_linenumber" name="L326" href="#L326">326</a>         opts.addOption(excludeFile);
-<a class="jxr_linenumber" name="L327" href="#L327">327</a> 
-<a class="jxr_linenumber" name="L328" href="#L328">328</a>         Option dir = <strong class="jxr_keyword">new</strong> Option(<span class="jxr_string">"d"</span>, <span class="jxr_string">"dir"</span>, false, <span class="jxr_string">"Used to indicate source when using --exclude"</span>);
-<a class="jxr_linenumber" name="L329" href="#L329">329</a>         opts.addOption(dir);
-<a class="jxr_linenumber" name="L330" href="#L330">330</a> 
-<a class="jxr_linenumber" name="L331" href="#L331">331</a>         OptionGroup outputType = <strong class="jxr_keyword">new</strong> OptionGroup();
-<a class="jxr_linenumber" name="L332" href="#L332">332</a> 
-<a class="jxr_linenumber" name="L333" href="#L333">333</a>         Option xml = <strong class="jxr_keyword">new</strong> Option(XML, <span class="jxr_string">"xml"</span>, false, <span class="jxr_string">"Output the report in raw XML format.  Not compatible with -s"</span>);
-<a class="jxr_linenumber" name="L334" href="#L334">334</a>         outputType.addOption(xml);
-<a class="jxr_linenumber" name="L335" href="#L335">335</a> 
-<a class="jxr_linenumber" name="L336" href="#L336">336</a>         Option xslt = <strong class="jxr_keyword">new</strong> Option(STYLESHEET_CLI, <span class="jxr_string">"stylesheet"</span>, <strong class="jxr_keyword">true</strong>,
-<a class="jxr_linenumber" name="L337" href="#L337">337</a>                 <span class="jxr_string">"XSLT stylesheet to use when creating the"</span> + <span class="jxr_string">" report.  Not compatible with -x"</span>);
-<a class="jxr_linenumber" name="L338" href="#L338">338</a>         outputType.addOption(xslt);
-<a class="jxr_linenumber" name="L339" href="#L339">339</a>         opts.addOptionGroup(outputType);
-<a class="jxr_linenumber" name="L340" href="#L340">340</a> 
-<a class="jxr_linenumber" name="L341" href="#L341">341</a>         <strong class="jxr_keyword">return</strong> opts;
-<a class="jxr_linenumber" name="L342" href="#L342">342</a>     }
-<a class="jxr_linenumber" name="L343" href="#L343">343</a> 
-<a class="jxr_linenumber" name="L344" href="#L344">344</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> printUsage(Options opts) {
-<a class="jxr_linenumber" name="L345" href="#L345">345</a>         HelpFormatter f = <strong class="jxr_keyword">new</strong> HelpFormatter();
-<a class="jxr_linenumber" name="L346" href="#L346">346</a>         f.setOptionComparator(<strong class="jxr_keyword">new</strong> OptionComparator());
-<a class="jxr_linenumber" name="L347" href="#L347">347</a>         String header = <span class="jxr_string">"\nAvailable options"</span>;
-<a class="jxr_linenumber" name="L348" href="#L348">348</a> 
-<a class="jxr_linenumber" name="L349" href="#L349">349</a>         String footer = <span class="jxr_string">"\nNOTE:\n"</span> + <span class="jxr_string">"Rat is really little more than a grep ATM\n"</span>
-<a class="jxr_linenumber" name="L350" href="#L350">350</a>                 + <span class="jxr_string">"Rat is also rather memory hungry ATM\n"</span> + <span class="jxr_string">"Rat is very basic ATM\n"</span>
-<a class="jxr_linenumber" name="L351" href="#L351">351</a>                 + <span class="jxr_string">"Rat highlights possible issues\n"</span> + <span class="jxr_string">"Rat reports require interpretation\n"</span>
-<a class="jxr_linenumber" name="L352" href="#L352">352</a>                 + <span class="jxr_string">"Rat often requires some tuning before it runs well against a project\n"</span>
-<a class="jxr_linenumber" name="L353" href="#L353">353</a>                 + <span class="jxr_string">"Rat relies on heuristics: it may miss issues\n"</span>;
-<a class="jxr_linenumber" name="L354" href="#L354">354</a> 
-<a class="jxr_linenumber" name="L355" href="#L355">355</a>         f.printHelp(<span class="jxr_string">"java -jar apache-rat/target/apache-rat-CURRENT-VERSION.jar [options] [DIR|TARBALL]"</span>, header, opts,
-<a class="jxr_linenumber" name="L356" href="#L356">356</a>                 footer, false);
-<a class="jxr_linenumber" name="L357" href="#L357">357</a>         System.exit(0);
-<a class="jxr_linenumber" name="L358" href="#L358">358</a>     }
-<a class="jxr_linenumber" name="L359" href="#L359">359</a> 
-<a class="jxr_linenumber" name="L360" href="#L360">360</a>     <strong class="jxr_keyword">private</strong> <a name="Report" href="../../../org/apache/rat/Report.html#Report">Report</a>() {
-<a class="jxr_linenumber" name="L361" href="#L361">361</a>         <em class="jxr_comment">// do not instantiate</em>
-<a class="jxr_linenumber" name="L362" href="#L362">362</a>     }
-<a class="jxr_linenumber" name="L363" href="#L363">363</a> 
-<a class="jxr_linenumber" name="L364" href="#L364">364</a>     <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L365" href="#L365">365</a> <em class="jxr_javadoccomment">     * Creates an IReportable object from the directory name and ReportConfiguration</em>
-<a class="jxr_linenumber" name="L366" href="#L366">366</a> <em class="jxr_javadoccomment">     * object.</em>
-<a class="jxr_linenumber" name="L367" href="#L367">367</a> <em class="jxr_javadoccomment">     * </em>
-<a class="jxr_linenumber" name="L368" href="#L368">368</a> <em class="jxr_javadoccomment">     * @param baseDirectory the directory that contains the files to report on.</em>
-<a class="jxr_linenumber" name="L369" href="#L369">369</a> <em class="jxr_javadoccomment">     * @param config the ReportConfiguration.</em>
-<a class="jxr_linenumber" name="L370" href="#L370">370</a> <em class="jxr_javadoccomment">     * @return the IReportable instance containing the files.</em>
-<a class="jxr_linenumber" name="L371" href="#L371">371</a> <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="L372" href="#L372">372</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <a name="IReportable" href="../../../org/apache/rat/report/IReportable.html#IReportable">IReportable</a> getDirectory(String baseDirectory, <a name="ReportConfiguration" href="../../../org/apache/rat/ReportConfiguration.html#ReportConfiguration">ReportConfiguration</a> config) {
-<a class="jxr_linenumber" name="L373" href="#L373">373</a>         <strong class="jxr_keyword">try</strong> (PrintStream out = <strong class="jxr_keyword">new</strong> PrintStream(config.getOutput().get())) {
-<a class="jxr_linenumber" name="L374" href="#L374">374</a>             File base = <strong class="jxr_keyword">new</strong> File(baseDirectory);
-<a class="jxr_linenumber" name="L375" href="#L375">375</a>             
-<a class="jxr_linenumber" name="L376" href="#L376">376</a>             <strong class="jxr_keyword">if</strong> (!base.exists()) {
-<a class="jxr_linenumber" name="L377" href="#L377">377</a>                 config.getLog().log(Level.ERROR, <span class="jxr_string">"Directory '"</span>+baseDirectory+<span class="jxr_string">"' does not exist"</span>);
-<a class="jxr_linenumber" name="L378" href="#L378">378</a>                 <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="L379" href="#L379">379</a>             }
-<a class="jxr_linenumber" name="L380" href="#L380">380</a> 
-<a class="jxr_linenumber" name="L381" href="#L381">381</a>             <strong class="jxr_keyword">if</strong> (base.isDirectory()) {
-<a class="jxr_linenumber" name="L382" href="#L382">382</a>                 <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> <a name="DirectoryWalker" href="../../../org/apache/rat/walker/DirectoryWalker.html#DirectoryWalker">DirectoryWalker</a>(base, config.getInputFileFilter(), config.getDirectoryFilter());
-<a class="jxr_linenumber" name="L383" href="#L383">383</a>             }
-<a class="jxr_linenumber" name="L384" href="#L384">384</a> 
-<a class="jxr_linenumber" name="L385" href="#L385">385</a>             <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="L386" href="#L386">386</a>                 <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> <a name="ArchiveWalker" href="../../../org/apache/rat/walker/ArchiveWalker.html#ArchiveWalker">ArchiveWalker</a>(base, config.getInputFileFilter());
-<a class="jxr_linenumber" name="L387" href="#L387">387</a>             } <strong class="jxr_keyword">catch</strong> (IOException ex) {
-<a class="jxr_linenumber" name="L388" href="#L388">388</a>                 config.getLog().log(Level.ERROR, <span class="jxr_string">"file '"</span>+baseDirectory+<span class="jxr_string">"' is not valid gzip data."</span>);
-<a class="jxr_linenumber" name="L389" href="#L389">389</a>                 <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="L390" href="#L390">390</a>             }
-<a class="jxr_linenumber" name="L391" href="#L391">391</a>         } <strong class="jxr_keyword">catch</strong> (IOException e) {
-<a class="jxr_linenumber" name="L392" href="#L392">392</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a name="ConfigurationException" href="../../../org/apache/rat/ConfigurationException.html#ConfigurationException">ConfigurationException</a>(<span class="jxr_string">"Error opening output"</span>, e);
-<a class="jxr_linenumber" name="L393" href="#L393">393</a>         }
-<a class="jxr_linenumber" name="L394" href="#L394">394</a>     }
-<a class="jxr_linenumber" name="L395" href="#L395">395</a> 
-<a class="jxr_linenumber" name="L396" href="#L396">396</a>     <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L397" href="#L397">397</a> <em class="jxr_javadoccomment">     * This class implements the {@code Comparator} interface for comparing Options.</em>
-<a class="jxr_linenumber" name="L398" href="#L398">398</a> <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="L399" href="#L399">399</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">class</strong> OptionComparator <strong class="jxr_keyword">implements</strong> Comparator&lt;Option&gt;, Serializable {
-<a class="jxr_linenumber" name="L400" href="#L400">400</a>         <em class="jxr_javadoccomment">/** The serial version UID. */</em>
-<a class="jxr_linenumber" name="L401" href="#L401">401</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">long</strong> serialVersionUID = 5305467873966684014L;
-<a class="jxr_linenumber" name="L402" href="#L402">402</a> 
-<a class="jxr_linenumber" name="L403" href="#L403">403</a>         <strong class="jxr_keyword">private</strong> String getKey(Option opt) {
-<a class="jxr_linenumber" name="L404" href="#L404">404</a>             String key = opt.getOpt();
-<a class="jxr_linenumber" name="L405" href="#L405">405</a>             key = key == <strong class="jxr_keyword">null</strong> ? opt.getLongOpt() : key;
-<a class="jxr_linenumber" name="L406" href="#L406">406</a>             <strong class="jxr_keyword">return</strong> key;
-<a class="jxr_linenumber" name="L407" href="#L407">407</a>         }
-<a class="jxr_linenumber" name="L408" href="#L408">408</a> 
-<a class="jxr_linenumber" name="L409" href="#L409">409</a>         <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L410" href="#L410">410</a> <em class="jxr_javadoccomment">         * Compares its two arguments for order. Returns a negative integer, zero, or a</em>
-<a class="jxr_linenumber" name="L411" href="#L411">411</a> <em class="jxr_javadoccomment">         * positive integer as the first argument is less than, equal to, or greater</em>
-<a class="jxr_linenumber" name="L412" href="#L412">412</a> <em class="jxr_javadoccomment">         * than the second.</em>
-<a class="jxr_linenumber" name="L413" href="#L413">413</a> <em class="jxr_javadoccomment">         *</em>
-<a class="jxr_linenumber" name="L414" href="#L414">414</a> <em class="jxr_javadoccomment">         * @param opt1 The first Option to be compared.</em>
-<a class="jxr_linenumber" name="L415" href="#L415">415</a> <em class="jxr_javadoccomment">         * @param opt2 The second Option to be compared.</em>
-<a class="jxr_linenumber" name="L416" href="#L416">416</a> <em class="jxr_javadoccomment">         * @return a negative integer, zero, or a positive integer as the first argument</em>
-<a class="jxr_linenumber" name="L417" href="#L417">417</a> <em class="jxr_javadoccomment">         * is less than, equal to, or greater than the second.</em>
-<a class="jxr_linenumber" name="L418" href="#L418">418</a> <em class="jxr_javadoccomment">         */</em>
-<a class="jxr_linenumber" name="L419" href="#L419">419</a>         @Override
-<a class="jxr_linenumber" name="L420" href="#L420">420</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">int</strong> compare(<strong class="jxr_keyword">final</strong> Option opt1, <strong class="jxr_keyword">final</strong> Option opt2) {
-<a class="jxr_linenumber" name="L421" href="#L421">421</a>             <strong class="jxr_keyword">return</strong> getKey(opt1).compareToIgnoreCase(getKey(opt2));
-<a class="jxr_linenumber" name="L422" href="#L422">422</a>         }
-<a class="jxr_linenumber" name="L423" href="#L423">423</a>     }
-<a class="jxr_linenumber" name="L424" href="#L424">424</a> }
+<a class="jxr_linenumber" name="L129" href="#L129">129</a>         CommandLine cl;
+<a class="jxr_linenumber" name="L130" href="#L130">130</a>         <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="L131" href="#L131">131</a>             cl = <strong class="jxr_keyword">new</strong> DefaultParser().parse(opts, args);
+<a class="jxr_linenumber" name="L132" href="#L132">132</a>         } <strong class="jxr_keyword">catch</strong> (ParseException e) {
+<a class="jxr_linenumber" name="L133" href="#L133">133</a>             DefaultLog.INSTANCE.error(e.getMessage());
+<a class="jxr_linenumber" name="L134" href="#L134">134</a>             DefaultLog.INSTANCE.error(<span class="jxr_string">"Please use the \&quot;--help\&quot; option to see a list of valid commands and options"</span>);
+<a class="jxr_linenumber" name="L135" href="#L135">135</a>             System.exit(1);
+<a class="jxr_linenumber" name="L136" href="#L136">136</a>             <strong class="jxr_keyword">return</strong>; <em class="jxr_comment">// dummy return (won't be reached) to avoid Eclipse complaint about possible NPE</em>
+<a class="jxr_linenumber" name="L137" href="#L137">137</a>                     <em class="jxr_comment">// for "cl"</em>
+<a class="jxr_linenumber" name="L138" href="#L138">138</a>         }
+<a class="jxr_linenumber" name="L139" href="#L139">139</a> 
+<a class="jxr_linenumber" name="L140" href="#L140">140</a>         <strong class="jxr_keyword">if</strong> (cl.hasOption(HELP)) {
+<a class="jxr_linenumber" name="L141" href="#L141">141</a>             printUsage(opts);
+<a class="jxr_linenumber" name="L142" href="#L142">142</a>         }
+<a class="jxr_linenumber" name="L143" href="#L143">143</a> 
+<a class="jxr_linenumber" name="L144" href="#L144">144</a>         args = cl.getArgs();
+<a class="jxr_linenumber" name="L145" href="#L145">145</a>         <strong class="jxr_keyword">if</strong> (args == <strong class="jxr_keyword">null</strong> || args.length != 1) {
+<a class="jxr_linenumber" name="L146" href="#L146">146</a>             printUsage(opts);
+<a class="jxr_linenumber" name="L147" href="#L147">147</a>         } <strong class="jxr_keyword">else</strong> {
+<a class="jxr_linenumber" name="L148" href="#L148">148</a>             <a name="ReportConfiguration" href="../../../org/apache/rat/ReportConfiguration.html#ReportConfiguration">ReportConfiguration</a> configuration = createConfiguration(args[0], cl);
+<a class="jxr_linenumber" name="L149" href="#L149">149</a>             configuration.validate(DefaultLog.INSTANCE::error);
+<a class="jxr_linenumber" name="L150" href="#L150">150</a> 
+<a class="jxr_linenumber" name="L151" href="#L151">151</a>             <strong class="jxr_keyword">boolean</strong> dryRun = false;
+<a class="jxr_linenumber" name="L152" href="#L152">152</a>             
+<a class="jxr_linenumber" name="L153" href="#L153">153</a>             <strong class="jxr_keyword">if</strong> (cl.hasOption(LIST_FAMILIES)) {
+<a class="jxr_linenumber" name="L154" href="#L154">154</a>                 LicenseFilter f = LicenseFilter.fromText(cl.getOptionValue(LIST_FAMILIES));
+<a class="jxr_linenumber" name="L155" href="#L155">155</a>                 <strong class="jxr_keyword">if</strong> (f != LicenseFilter.none) {                        
+<a class="jxr_linenumber" name="L156" href="#L156">156</a>                     dryRun = <strong class="jxr_keyword">true</strong>;
+<a class="jxr_linenumber" name="L157" href="#L157">157</a>                     Reporter.listLicenseFamilies(configuration, f);
+<a class="jxr_linenumber" name="L158" href="#L158">158</a>                 }
+<a class="jxr_linenumber" name="L159" href="#L159">159</a>             }
+<a class="jxr_linenumber" name="L160" href="#L160">160</a>             <strong class="jxr_keyword">if</strong> (cl.hasOption(LIST_LICENSES)) {
+<a class="jxr_linenumber" name="L161" href="#L161">161</a>                 LicenseFilter f = LicenseFilter.fromText(cl.getOptionValue(LIST_LICENSES));
+<a class="jxr_linenumber" name="L162" href="#L162">162</a>                 <strong class="jxr_keyword">if</strong> (f != LicenseFilter.none) {                        
+<a class="jxr_linenumber" name="L163" href="#L163">163</a>                     dryRun = <strong class="jxr_keyword">true</strong>;
+<a class="jxr_linenumber" name="L164" href="#L164">164</a>                     Reporter.listLicenses(configuration, f);
+<a class="jxr_linenumber" name="L165" href="#L165">165</a>                 }
+<a class="jxr_linenumber" name="L166" href="#L166">166</a>             }
+<a class="jxr_linenumber" name="L167" href="#L167">167</a>             
+<a class="jxr_linenumber" name="L168" href="#L168">168</a>             <strong class="jxr_keyword">if</strong> (!dryRun) {
+<a class="jxr_linenumber" name="L169" href="#L169">169</a>                 Reporter.report(configuration);
+<a class="jxr_linenumber" name="L170" href="#L170">170</a>             }
+<a class="jxr_linenumber" name="L171" href="#L171">171</a>         }
+<a class="jxr_linenumber" name="L172" href="#L172">172</a>     }
+<a class="jxr_linenumber" name="L173" href="#L173">173</a> 
+<a class="jxr_linenumber" name="L174" href="#L174">174</a>     <strong class="jxr_keyword">static</strong> <a name="ReportConfiguration" href="../../../org/apache/rat/ReportConfiguration.html#ReportConfiguration">ReportConfiguration</a> createConfiguration(String baseDirectory, CommandLine cl) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="L175" href="#L175">175</a>         <strong class="jxr_keyword">final</strong> <a name="ReportConfiguration" href="../../../org/apache/rat/ReportConfiguration.html#ReportConfiguration">ReportConfiguration</a> configuration = <strong class="jxr_keyword">new</strong> <a name="ReportConfiguration" href="../../../org/apache/rat/ReportConfiguration.html#ReportConfiguration">ReportConfiguration</a>(DefaultLog.INSTANCE);
+<a class="jxr_linenumber" name="L176" href="#L176">176</a> 
+<a class="jxr_linenumber" name="L177" href="#L177">177</a>         <strong class="jxr_keyword">if</strong> (cl.hasOption('o')) {
+<a class="jxr_linenumber" name="L178" href="#L178">178</a>             configuration.setOut(<strong class="jxr_keyword">new</strong> File(cl.getOptionValue('o')));
+<a class="jxr_linenumber" name="L179" href="#L179">179</a>         }
+<a class="jxr_linenumber" name="L180" href="#L180">180</a> 
+<a class="jxr_linenumber" name="L181" href="#L181">181</a>         <strong class="jxr_keyword">if</strong> (cl.hasOption(SCAN_HIDDEN_DIRECTORIES)) {
+<a class="jxr_linenumber" name="L182" href="#L182">182</a>             configuration.setDirectoryFilter(<strong class="jxr_keyword">null</strong>);
+<a class="jxr_linenumber" name="L183" href="#L183">183</a>         }
+<a class="jxr_linenumber" name="L184" href="#L184">184</a> 
+<a class="jxr_linenumber" name="L185" href="#L185">185</a>         <strong class="jxr_keyword">if</strong> (cl.hasOption('a') || cl.hasOption('A')) {
+<a class="jxr_linenumber" name="L186" href="#L186">186</a>             configuration.setAddLicenseHeaders(cl.hasOption('f') ? AddLicenseHeaders.FORCED : AddLicenseHeaders.TRUE);
+<a class="jxr_linenumber" name="L187" href="#L187">187</a>             configuration.setCopyrightMessage(cl.getOptionValue(<span class="jxr_string">"c"</span>));
+<a class="jxr_linenumber" name="L188" href="#L188">188</a>         }
+<a class="jxr_linenumber" name="L189" href="#L189">189</a> 
+<a class="jxr_linenumber" name="L190" href="#L190">190</a>         <strong class="jxr_keyword">if</strong> (cl.hasOption(EXCLUDE_CLI)) {
+<a class="jxr_linenumber" name="L191" href="#L191">191</a>             String[] excludes = cl.getOptionValues(EXCLUDE_CLI);
+<a class="jxr_linenumber" name="L192" href="#L192">192</a>             <strong class="jxr_keyword">if</strong> (excludes != <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="L193" href="#L193">193</a>                 <strong class="jxr_keyword">final</strong> FilenameFilter filter = parseExclusions(Arrays.asList(excludes));
+<a class="jxr_linenumber" name="L194" href="#L194">194</a>                 configuration.setInputFileFilter(filter);
+<a class="jxr_linenumber" name="L195" href="#L195">195</a>             }
+<a class="jxr_linenumber" name="L196" href="#L196">196</a>         } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (cl.hasOption(EXCLUDE_FILE_CLI)) {
+<a class="jxr_linenumber" name="L197" href="#L197">197</a>             String excludeFileName = cl.getOptionValue(EXCLUDE_FILE_CLI);
+<a class="jxr_linenumber" name="L198" href="#L198">198</a>             <strong class="jxr_keyword">if</strong> (excludeFileName != <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="L199" href="#L199">199</a>                 <strong class="jxr_keyword">final</strong> FilenameFilter filter = parseExclusions(
+<a class="jxr_linenumber" name="L200" href="#L200">200</a>                         FileUtils.readLines(<strong class="jxr_keyword">new</strong> File(excludeFileName), StandardCharsets.UTF_8));
+<a class="jxr_linenumber" name="L201" href="#L201">201</a>                 configuration.setInputFileFilter(filter);
+<a class="jxr_linenumber" name="L202" href="#L202">202</a>             }
+<a class="jxr_linenumber" name="L203" href="#L203">203</a>         }
+<a class="jxr_linenumber" name="L204" href="#L204">204</a> 
+<a class="jxr_linenumber" name="L205" href="#L205">205</a>         <strong class="jxr_keyword">if</strong> (cl.hasOption(XML)) {
+<a class="jxr_linenumber" name="L206" href="#L206">206</a>             configuration.setStyleReport(false);
+<a class="jxr_linenumber" name="L207" href="#L207">207</a>         } <strong class="jxr_keyword">else</strong> {
+<a class="jxr_linenumber" name="L208" href="#L208">208</a>             configuration.setStyleReport(<strong class="jxr_keyword">true</strong>);
+<a class="jxr_linenumber" name="L209" href="#L209">209</a>             <strong class="jxr_keyword">if</strong> (cl.hasOption(STYLESHEET_CLI)) {
+<a class="jxr_linenumber" name="L210" href="#L210">210</a>                 String[] style = cl.getOptionValues(STYLESHEET_CLI);
+<a class="jxr_linenumber" name="L211" href="#L211">211</a>                 <strong class="jxr_keyword">if</strong> (style.length != 1) {
+<a class="jxr_linenumber" name="L212" href="#L212">212</a>                     DefaultLog.INSTANCE.error(<span class="jxr_string">"Please specify a single stylesheet"</span>);
+<a class="jxr_linenumber" name="L213" href="#L213">213</a>                     System.exit(1);
+<a class="jxr_linenumber" name="L214" href="#L214">214</a>                 }
+<a class="jxr_linenumber" name="L215" href="#L215">215</a>                 configuration.setStyleSheet(() -&gt; Files.newInputStream(Paths.get(style[0])));
+<a class="jxr_linenumber" name="L216" href="#L216">216</a>             }
+<a class="jxr_linenumber" name="L217" href="#L217">217</a>         }
+<a class="jxr_linenumber" name="L218" href="#L218">218</a> 
+<a class="jxr_linenumber" name="L219" href="#L219">219</a>         Defaults.Builder defaultBuilder = Defaults.builder();
+<a class="jxr_linenumber" name="L220" href="#L220">220</a>         <strong class="jxr_keyword">if</strong> (cl.hasOption(NO_DEFAULTS)) {
+<a class="jxr_linenumber" name="L221" href="#L221">221</a>             defaultBuilder.noDefault();
+<a class="jxr_linenumber" name="L222" href="#L222">222</a>         }
+<a class="jxr_linenumber" name="L223" href="#L223">223</a>         <strong class="jxr_keyword">if</strong> (cl.hasOption(LICENSES)) {
+<a class="jxr_linenumber" name="L224" href="#L224">224</a>             <strong class="jxr_keyword">for</strong> (String fn : cl.getOptionValues(LICENSES)) {
+<a class="jxr_linenumber" name="L225" href="#L225">225</a>                 defaultBuilder.add(fn);
+<a class="jxr_linenumber" name="L226" href="#L226">226</a>             }
+<a class="jxr_linenumber" name="L227" href="#L227">227</a>         }
+<a class="jxr_linenumber" name="L228" href="#L228">228</a>         <a name="Defaults" href="../../../org/apache/rat/Defaults.html#Defaults">Defaults</a> defaults = defaultBuilder.build();
+<a class="jxr_linenumber" name="L229" href="#L229">229</a>         configuration.setFrom(defaults);
+<a class="jxr_linenumber" name="L230" href="#L230">230</a>         configuration.setReportable(getDirectory(baseDirectory, configuration));
+<a class="jxr_linenumber" name="L231" href="#L231">231</a>         <strong class="jxr_keyword">return</strong> configuration;
+<a class="jxr_linenumber" name="L232" href="#L232">232</a>     }
+<a class="jxr_linenumber" name="L233" href="#L233">233</a>     
+<a class="jxr_linenumber" name="L234" href="#L234">234</a>     <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L235" href="#L235">235</a> <em class="jxr_javadoccomment">     * Creates a filename filter from patterns to exclude.</em>
+<a class="jxr_linenumber" name="L236" href="#L236">236</a> <em class="jxr_javadoccomment">     * </em>
+<a class="jxr_linenumber" name="L237" href="#L237">237</a> <em class="jxr_javadoccomment">     * @param excludes the list of patterns to exclude.</em>
+<a class="jxr_linenumber" name="L238" href="#L238">238</a> <em class="jxr_javadoccomment">     * @return the FilenameFilter tht excludes the patterns</em>
+<a class="jxr_linenumber" name="L239" href="#L239">239</a> <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="L240" href="#L240">240</a>     <strong class="jxr_keyword">static</strong> FilenameFilter parseExclusions(List&lt;String&gt; excludes) {
+<a class="jxr_linenumber" name="L241" href="#L241">241</a>         <strong class="jxr_keyword">final</strong> OrFileFilter orFilter = <strong class="jxr_keyword">new</strong> OrFileFilter();
+<a class="jxr_linenumber" name="L242" href="#L242">242</a>         <strong class="jxr_keyword">int</strong> ignoredLines = 0;
+<a class="jxr_linenumber" name="L243" href="#L243">243</a>         <strong class="jxr_keyword">for</strong> (String exclude : excludes) {
+<a class="jxr_linenumber" name="L244" href="#L244">244</a>             <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="L245" href="#L245">245</a>                 <em class="jxr_comment">// skip comments</em>
+<a class="jxr_linenumber" name="L246" href="#L246">246</a>                 <strong class="jxr_keyword">if</strong> (exclude.startsWith(<span class="jxr_string">"#"</span>) || StringUtils.isEmpty(exclude)) {
+<a class="jxr_linenumber" name="L247" href="#L247">247</a>                     ignoredLines++;
+<a class="jxr_linenumber" name="L248" href="#L248">248</a>                     <strong class="jxr_keyword">continue</strong>;
+<a class="jxr_linenumber" name="L249" href="#L249">249</a>                 }
+<a class="jxr_linenumber" name="L250" href="#L250">250</a> 
+<a class="jxr_linenumber" name="L251" href="#L251">251</a>                 String exclusion = exclude.trim();
+<a class="jxr_linenumber" name="L252" href="#L252">252</a>                 <em class="jxr_comment">// interpret given patterns as regular expression, direct file names or</em>
+<a class="jxr_linenumber" name="L253" href="#L253">253</a>                 <em class="jxr_comment">// wildcards to give users more choices to configure exclusions</em>
+<a class="jxr_linenumber" name="L254" href="#L254">254</a>                 orFilter.addFileFilter(<strong class="jxr_keyword">new</strong> RegexFileFilter(exclusion));
+<a class="jxr_linenumber" name="L255" href="#L255">255</a>                 orFilter.addFileFilter(<strong class="jxr_keyword">new</strong> NameFileFilter(exclusion));
+<a class="jxr_linenumber" name="L256" href="#L256">256</a>                 orFilter.addFileFilter(WildcardFileFilter.builder().setWildcards(exclusion).get());
+<a class="jxr_linenumber" name="L257" href="#L257">257</a>             } <strong class="jxr_keyword">catch</strong> (PatternSyntaxException e) {
+<a class="jxr_linenumber" name="L258" href="#L258">258</a>                 DefaultLog.INSTANCE.error(<span class="jxr_string">"Will skip given exclusion '"</span> + exclude + <span class="jxr_string">"' due to "</span> + e);
+<a class="jxr_linenumber" name="L259" href="#L259">259</a>             }
+<a class="jxr_linenumber" name="L260" href="#L260">260</a>         }
+<a class="jxr_linenumber" name="L261" href="#L261">261</a>         DefaultLog.INSTANCE.error(<span class="jxr_string">"Ignored "</span> + ignoredLines + <span class="jxr_string">" lines in your exclusion files as comments or empty lines."</span>);
+<a class="jxr_linenumber" name="L262" href="#L262">262</a>         <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> NotFileFilter(orFilter);
+<a class="jxr_linenumber" name="L263" href="#L263">263</a>     }
+<a class="jxr_linenumber" name="L264" href="#L264">264</a> 
+<a class="jxr_linenumber" name="L265" href="#L265">265</a>     <strong class="jxr_keyword">static</strong> Options buildOptions() {
+<a class="jxr_linenumber" name="L266" href="#L266">266</a>         String licFilterValues = String.join(<span class="jxr_string">", "</span>, 
+<a class="jxr_linenumber" name="L267" href="#L267">267</a>                 Arrays.stream(LicenseFilter.values()).map(LicenseFilter::name).collect(Collectors.toList()));
+<a class="jxr_linenumber" name="L268" href="#L268">268</a> 
+<a class="jxr_linenumber" name="L269" href="#L269">269</a>         Options opts = <strong class="jxr_keyword">new</strong> Options()
+<a class="jxr_linenumber" name="L270" href="#L270">270</a>         
+<a class="jxr_linenumber" name="L271" href="#L271">271</a>         .addOption(
+<a class="jxr_linenumber" name="L272" href="#L272">272</a>                 Option.builder().hasArg(<strong class="jxr_keyword">true</strong>).longOpt(LIST_FAMILIES)
+<a class="jxr_linenumber" name="L273" href="#L273">273</a>                 .desc(<span class="jxr_string">"List the defined license families (default is none). Valid options are: "</span>+licFilterValues+<span class="jxr_string">"."</span>)
+<a class="jxr_linenumber" name="L274" href="#L274">274</a>                 .build())
+<a class="jxr_linenumber" name="L275" href="#L275">275</a>         .addOption(
+<a class="jxr_linenumber" name="L276" href="#L276">276</a>                 Option.builder().hasArg(<strong class="jxr_keyword">true</strong>).longOpt(LIST_LICENSES)
+<a class="jxr_linenumber" name="L277" href="#L277">277</a>                 .desc(<span class="jxr_string">"List the defined licenses (default is none). Valid options are: "</span>+licFilterValues+<span class="jxr_string">"."</span>)
+<a class="jxr_linenumber" name="L278" href="#L278">278</a>                 .build())
+<a class="jxr_linenumber" name="L279" href="#L279">279</a> 
+<a class="jxr_linenumber" name="L280" href="#L280">280</a>         .addOption(<strong class="jxr_keyword">new</strong> Option(HELP, <span class="jxr_string">"help"</span>, false, <span class="jxr_string">"Print help for the RAT command line interface and exit."</span>));
+<a class="jxr_linenumber" name="L281" href="#L281">281</a>         
+<a class="jxr_linenumber" name="L282" href="#L282">282</a> 
+<a class="jxr_linenumber" name="L283" href="#L283">283</a>         Option out = <strong class="jxr_keyword">new</strong> Option(<span class="jxr_string">"o"</span>, <span class="jxr_string">"out"</span>, <strong class="jxr_keyword">true</strong>,
+<a class="jxr_linenumber" name="L284" href="#L284">284</a>                 <span class="jxr_string">"Define the output file where to write a report to (default is System.out)."</span>);
+<a class="jxr_linenumber" name="L285" href="#L285">285</a>         opts.addOption(out);
+<a class="jxr_linenumber" name="L286" href="#L286">286</a> 
+<a class="jxr_linenumber" name="L287" href="#L287">287</a>         String defaultHandlingText = <span class="jxr_string">" By default all approved default licenses are used"</span>;
+<a class="jxr_linenumber" name="L288" href="#L288">288</a>         Option noDefaults = <strong class="jxr_keyword">new</strong> Option(<strong class="jxr_keyword">null</strong>, NO_DEFAULTS, false, <span class="jxr_string">"Ignore default configuration."</span> + defaultHandlingText);
+<a class="jxr_linenumber" name="L289" href="#L289">289</a>         opts.addOption(noDefaults);
+<a class="jxr_linenumber" name="L290" href="#L290">290</a> 
+<a class="jxr_linenumber" name="L291" href="#L291">291</a>         opts.addOption(<strong class="jxr_keyword">null</strong>, LICENSES, <strong class="jxr_keyword">true</strong>, <span class="jxr_string">"File names or URLs for license definitions"</span>);
+<a class="jxr_linenumber" name="L292" href="#L292">292</a>         opts.addOption(<strong class="jxr_keyword">null</strong>, SCAN_HIDDEN_DIRECTORIES, false, <span class="jxr_string">"Scan hidden directories"</span>);
+<a class="jxr_linenumber" name="L293" href="#L293">293</a> 
+<a class="jxr_linenumber" name="L294" href="#L294">294</a>         OptionGroup addLicenseGroup = <strong class="jxr_keyword">new</strong> OptionGroup();
+<a class="jxr_linenumber" name="L295" href="#L295">295</a>         String addLicenseDesc = <span class="jxr_string">"Add the default license header to any file with an unknown license that is not in the exclusion list. "</span>
+<a class="jxr_linenumber" name="L296" href="#L296">296</a>                 + <span class="jxr_string">"By default new files will be created with the license header, "</span>
+<a class="jxr_linenumber" name="L297" href="#L297">297</a>                 + <span class="jxr_string">"to force the modification of existing files use the --force option."</span>;
+<a class="jxr_linenumber" name="L298" href="#L298">298</a> 
+<a class="jxr_linenumber" name="L299" href="#L299">299</a>         <em class="jxr_comment">// RAT-85/RAT-203: Deprecated! added only for convenience and for backwards</em>
+<a class="jxr_linenumber" name="L300" href="#L300">300</a>         <em class="jxr_comment">// compatibility</em>
+<a class="jxr_linenumber" name="L301" href="#L301">301</a>         Option addLicence = <strong class="jxr_keyword">new</strong> Option(ADD_OLD, <span class="jxr_string">"addLicence"</span>, false, addLicenseDesc);
+<a class="jxr_linenumber" name="L302" href="#L302">302</a>         addLicenseGroup.addOption(addLicence);
+<a class="jxr_linenumber" name="L303" href="#L303">303</a>         Option addLicense = <strong class="jxr_keyword">new</strong> Option(ADD, <span class="jxr_string">"addLicense"</span>, false, addLicenseDesc);
+<a class="jxr_linenumber" name="L304" href="#L304">304</a>         addLicenseGroup.addOption(addLicense);
+<a class="jxr_linenumber" name="L305" href="#L305">305</a>         opts.addOptionGroup(addLicenseGroup);
+<a class="jxr_linenumber" name="L306" href="#L306">306</a> 
+<a class="jxr_linenumber" name="L307" href="#L307">307</a>         Option write = <strong class="jxr_keyword">new</strong> Option(FORCE, <span class="jxr_string">"force"</span>, false,
+<a class="jxr_linenumber" name="L308" href="#L308">308</a>                 <span class="jxr_string">"Forces any changes in files to be written directly to the source files (i.e. new files are not created)."</span>);
+<a class="jxr_linenumber" name="L309" href="#L309">309</a>         opts.addOption(write);
+<a class="jxr_linenumber" name="L310" href="#L310">310</a> 
+<a class="jxr_linenumber" name="L311" href="#L311">311</a>         Option copyright = <strong class="jxr_keyword">new</strong> Option(COPYRIGHT, <span class="jxr_string">"copyright"</span>, <strong class="jxr_keyword">true</strong>,
+<a class="jxr_linenumber" name="L312" href="#L312">312</a>                 <span class="jxr_string">"The copyright message to use in the license headers, usually in the form of \&quot;Copyright 2008 Foo\&quot;"</span>);
+<a class="jxr_linenumber" name="L313" href="#L313">313</a>         opts.addOption(copyright);
+<a class="jxr_linenumber" name="L314" href="#L314">314</a> 
+<a class="jxr_linenumber" name="L315" href="#L315">315</a>         <strong class="jxr_keyword">final</strong> Option exclude = Option.builder(EXCLUDE_CLI).argName(<span class="jxr_string">"expression"</span>).longOpt(<span class="jxr_string">"exclude"</span>).hasArgs()
+<a class="jxr_linenumber" name="L316" href="#L316">316</a>                 .desc(<span class="jxr_string">"Excludes files matching wildcard &lt;expression&gt;. "</span>
+<a class="jxr_linenumber" name="L317" href="#L317">317</a>                         + <span class="jxr_string">"Note that --dir is required when using this parameter. "</span> + <span class="jxr_string">"Allows multiple arguments."</span>)
+<a class="jxr_linenumber" name="L318" href="#L318">318</a>                 .build();
+<a class="jxr_linenumber" name="L319" href="#L319">319</a>         opts.addOption(exclude);
+<a class="jxr_linenumber" name="L320" href="#L320">320</a> 
+<a class="jxr_linenumber" name="L321" href="#L321">321</a>         <strong class="jxr_keyword">final</strong> Option excludeFile = Option.builder(EXCLUDE_FILE_CLI).argName(<span class="jxr_string">"fileName"</span>).longOpt(<span class="jxr_string">"exclude-file"</span>)
+<a class="jxr_linenumber" name="L322" href="#L322">322</a>                 .hasArgs().desc(<span class="jxr_string">"Excludes files matching regular expression in &lt;file&gt; "</span>
+<a class="jxr_linenumber" name="L323" href="#L323">323</a>                         + <span class="jxr_string">"Note that --dir is required when using this parameter. "</span>)
+<a class="jxr_linenumber" name="L324" href="#L324">324</a>                 .build();
+<a class="jxr_linenumber" name="L325" href="#L325">325</a>         opts.addOption(excludeFile);
+<a class="jxr_linenumber" name="L326" href="#L326">326</a> 
+<a class="jxr_linenumber" name="L327" href="#L327">327</a>         Option dir = <strong class="jxr_keyword">new</strong> Option(<span class="jxr_string">"d"</span>, <span class="jxr_string">"dir"</span>, false, <span class="jxr_string">"Used to indicate source when using --exclude"</span>);
+<a class="jxr_linenumber" name="L328" href="#L328">328</a>         opts.addOption(dir);
+<a class="jxr_linenumber" name="L329" href="#L329">329</a> 
+<a class="jxr_linenumber" name="L330" href="#L330">330</a>         OptionGroup outputType = <strong class="jxr_keyword">new</strong> OptionGroup();
+<a class="jxr_linenumber" name="L331" href="#L331">331</a> 
+<a class="jxr_linenumber" name="L332" href="#L332">332</a>         Option xml = <strong class="jxr_keyword">new</strong> Option(XML, <span class="jxr_string">"xml"</span>, false, <span class="jxr_string">"Output the report in raw XML format.  Not compatible with -s"</span>);
+<a class="jxr_linenumber" name="L333" href="#L333">333</a>         outputType.addOption(xml);
+<a class="jxr_linenumber" name="L334" href="#L334">334</a> 
+<a class="jxr_linenumber" name="L335" href="#L335">335</a>         Option xslt = <strong class="jxr_keyword">new</strong> Option(STYLESHEET_CLI, <span class="jxr_string">"stylesheet"</span>, <strong class="jxr_keyword">true</strong>,
+<a class="jxr_linenumber" name="L336" href="#L336">336</a>                 <span class="jxr_string">"XSLT stylesheet to use when creating the"</span> + <span class="jxr_string">" report.  Not compatible with -x"</span>);
+<a class="jxr_linenumber" name="L337" href="#L337">337</a>         outputType.addOption(xslt);
+<a class="jxr_linenumber" name="L338" href="#L338">338</a>         opts.addOptionGroup(outputType);
+<a class="jxr_linenumber" name="L339" href="#L339">339</a> 
+<a class="jxr_linenumber" name="L340" href="#L340">340</a>         <strong class="jxr_keyword">return</strong> opts;
+<a class="jxr_linenumber" name="L341" href="#L341">341</a>     }
+<a class="jxr_linenumber" name="L342" href="#L342">342</a> 
+<a class="jxr_linenumber" name="L343" href="#L343">343</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> printUsage(Options opts) {
+<a class="jxr_linenumber" name="L344" href="#L344">344</a>         HelpFormatter f = <strong class="jxr_keyword">new</strong> HelpFormatter();
+<a class="jxr_linenumber" name="L345" href="#L345">345</a>         f.setOptionComparator(<strong class="jxr_keyword">new</strong> OptionComparator());
+<a class="jxr_linenumber" name="L346" href="#L346">346</a>         String header = <span class="jxr_string">"\nAvailable options"</span>;
+<a class="jxr_linenumber" name="L347" href="#L347">347</a> 
+<a class="jxr_linenumber" name="L348" href="#L348">348</a>         String footer = <span class="jxr_string">"\nNOTE:\n"</span> + <span class="jxr_string">"Rat is really little more than a grep ATM\n"</span>
+<a class="jxr_linenumber" name="L349" href="#L349">349</a>                 + <span class="jxr_string">"Rat is also rather memory hungry ATM\n"</span> + <span class="jxr_string">"Rat is very basic ATM\n"</span>
+<a class="jxr_linenumber" name="L350" href="#L350">350</a>                 + <span class="jxr_string">"Rat highlights possible issues\n"</span> + <span class="jxr_string">"Rat reports require interpretation\n"</span>
+<a class="jxr_linenumber" name="L351" href="#L351">351</a>                 + <span class="jxr_string">"Rat often requires some tuning before it runs well against a project\n"</span>
+<a class="jxr_linenumber" name="L352" href="#L352">352</a>                 + <span class="jxr_string">"Rat relies on heuristics: it may miss issues\n"</span>;
+<a class="jxr_linenumber" name="L353" href="#L353">353</a> 
+<a class="jxr_linenumber" name="L354" href="#L354">354</a>         f.printHelp(<span class="jxr_string">"java -jar apache-rat/target/apache-rat-CURRENT-VERSION.jar [options] [DIR|TARBALL]"</span>, header, opts,
+<a class="jxr_linenumber" name="L355" href="#L355">355</a>                 footer, false);
+<a class="jxr_linenumber" name="L356" href="#L356">356</a>         System.exit(0);
+<a class="jxr_linenumber" name="L357" href="#L357">357</a>     }
+<a class="jxr_linenumber" name="L358" href="#L358">358</a> 
+<a class="jxr_linenumber" name="L359" href="#L359">359</a>     <strong class="jxr_keyword">private</strong> <a name="Report" href="../../../org/apache/rat/Report.html#Report">Report</a>() {
+<a class="jxr_linenumber" name="L360" href="#L360">360</a>         <em class="jxr_comment">// do not instantiate</em>
+<a class="jxr_linenumber" name="L361" href="#L361">361</a>     }
+<a class="jxr_linenumber" name="L362" href="#L362">362</a> 
+<a class="jxr_linenumber" name="L363" href="#L363">363</a>     <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L364" href="#L364">364</a> <em class="jxr_javadoccomment">     * Creates an IReportable object from the directory name and ReportConfiguration</em>
+<a class="jxr_linenumber" name="L365" href="#L365">365</a> <em class="jxr_javadoccomment">     * object.</em>
+<a class="jxr_linenumber" name="L366" href="#L366">366</a> <em class="jxr_javadoccomment">     * </em>
+<a class="jxr_linenumber" name="L367" href="#L367">367</a> <em class="jxr_javadoccomment">     * @param baseDirectory the directory that contains the files to report on.</em>
+<a class="jxr_linenumber" name="L368" href="#L368">368</a> <em class="jxr_javadoccomment">     * @param config the ReportConfiguration.</em>
+<a class="jxr_linenumber" name="L369" href="#L369">369</a> <em class="jxr_javadoccomment">     * @return the IReportable instance containing the files.</em>
+<a class="jxr_linenumber" name="L370" href="#L370">370</a> <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="L371" href="#L371">371</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <a name="IReportable" href="../../../org/apache/rat/report/IReportable.html#IReportable">IReportable</a> getDirectory(String baseDirectory, <a name="ReportConfiguration" href="../../../org/apache/rat/ReportConfiguration.html#ReportConfiguration">ReportConfiguration</a> config) {
+<a class="jxr_linenumber" name="L372" href="#L372">372</a>         <strong class="jxr_keyword">try</strong> (PrintStream out = <strong class="jxr_keyword">new</strong> PrintStream(config.getOutput().get())) {
+<a class="jxr_linenumber" name="L373" href="#L373">373</a>             File base = <strong class="jxr_keyword">new</strong> File(baseDirectory);
+<a class="jxr_linenumber" name="L374" href="#L374">374</a>             
+<a class="jxr_linenumber" name="L375" href="#L375">375</a>             <strong class="jxr_keyword">if</strong> (!base.exists()) {
+<a class="jxr_linenumber" name="L376" href="#L376">376</a>                 config.getLog().log(Level.ERROR, <span class="jxr_string">"Directory '"</span>+baseDirectory+<span class="jxr_string">"' does not exist"</span>);
+<a class="jxr_linenumber" name="L377" href="#L377">377</a>                 <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
+<a class="jxr_linenumber" name="L378" href="#L378">378</a>             }
+<a class="jxr_linenumber" name="L379" href="#L379">379</a> 
+<a class="jxr_linenumber" name="L380" href="#L380">380</a>             <strong class="jxr_keyword">if</strong> (base.isDirectory()) {
+<a class="jxr_linenumber" name="L381" href="#L381">381</a>                 <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> <a name="DirectoryWalker" href="../../../org/apache/rat/walker/DirectoryWalker.html#DirectoryWalker">DirectoryWalker</a>(base, config.getInputFileFilter(), config.getDirectoryFilter());
+<a class="jxr_linenumber" name="L382" href="#L382">382</a>             }
+<a class="jxr_linenumber" name="L383" href="#L383">383</a> 
+<a class="jxr_linenumber" name="L384" href="#L384">384</a>             <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="L385" href="#L385">385</a>                 <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> <a name="ArchiveWalker" href="../../../org/apache/rat/walker/ArchiveWalker.html#ArchiveWalker">ArchiveWalker</a>(base, config.getInputFileFilter());
+<a class="jxr_linenumber" name="L386" href="#L386">386</a>             } <strong class="jxr_keyword">catch</strong> (IOException ex) {
+<a class="jxr_linenumber" name="L387" href="#L387">387</a>                 config.getLog().log(Level.ERROR, <span class="jxr_string">"file '"</span>+baseDirectory+<span class="jxr_string">"' is not valid gzip data."</span>);
+<a class="jxr_linenumber" name="L388" href="#L388">388</a>                 <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
+<a class="jxr_linenumber" name="L389" href="#L389">389</a>             }
+<a class="jxr_linenumber" name="L390" href="#L390">390</a>         } <strong class="jxr_keyword">catch</strong> (IOException e) {
+<a class="jxr_linenumber" name="L391" href="#L391">391</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a name="ConfigurationException" href="../../../org/apache/rat/ConfigurationException.html#ConfigurationException">ConfigurationException</a>(<span class="jxr_string">"Error opening output"</span>, e);
+<a class="jxr_linenumber" name="L392" href="#L392">392</a>         }
+<a class="jxr_linenumber" name="L393" href="#L393">393</a>     }
+<a class="jxr_linenumber" name="L394" href="#L394">394</a> 
+<a class="jxr_linenumber" name="L395" href="#L395">395</a>     <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L396" href="#L396">396</a> <em class="jxr_javadoccomment">     * This class implements the {@code Comparator} interface for comparing Options.</em>
+<a class="jxr_linenumber" name="L397" href="#L397">397</a> <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="L398" href="#L398">398</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">class</strong> OptionComparator <strong class="jxr_keyword">implements</strong> Comparator&lt;Option&gt;, Serializable {
+<a class="jxr_linenumber" name="L399" href="#L399">399</a>         <em class="jxr_javadoccomment">/** The serial version UID. */</em>
+<a class="jxr_linenumber" name="L400" href="#L400">400</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">long</strong> serialVersionUID = 5305467873966684014L;
+<a class="jxr_linenumber" name="L401" href="#L401">401</a> 
+<a class="jxr_linenumber" name="L402" href="#L402">402</a>         <strong class="jxr_keyword">private</strong> String getKey(Option opt) {
+<a class="jxr_linenumber" name="L403" href="#L403">403</a>             String key = opt.getOpt();
+<a class="jxr_linenumber" name="L404" href="#L404">404</a>             key = key == <strong class="jxr_keyword">null</strong> ? opt.getLongOpt() : key;
+<a class="jxr_linenumber" name="L405" href="#L405">405</a>             <strong class="jxr_keyword">return</strong> key;
+<a class="jxr_linenumber" name="L406" href="#L406">406</a>         }
+<a class="jxr_linenumber" name="L407" href="#L407">407</a> 
+<a class="jxr_linenumber" name="L408" href="#L408">408</a>         <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L409" href="#L409">409</a> <em class="jxr_javadoccomment">         * Compares its two arguments for order. Returns a negative integer, zero, or a</em>
+<a class="jxr_linenumber" name="L410" href="#L410">410</a> <em class="jxr_javadoccomment">         * positive integer as the first argument is less than, equal to, or greater</em>
+<a class="jxr_linenumber" name="L411" href="#L411">411</a> <em class="jxr_javadoccomment">         * than the second.</em>
+<a class="jxr_linenumber" name="L412" href="#L412">412</a> <em class="jxr_javadoccomment">         *</em>
+<a class="jxr_linenumber" name="L413" href="#L413">413</a> <em class="jxr_javadoccomment">         * @param opt1 The first Option to be compared.</em>
+<a class="jxr_linenumber" name="L414" href="#L414">414</a> <em class="jxr_javadoccomment">         * @param opt2 The second Option to be compared.</em>
+<a class="jxr_linenumber" name="L415" href="#L415">415</a> <em class="jxr_javadoccomment">         * @return a negative integer, zero, or a positive integer as the first argument</em>
+<a class="jxr_linenumber" name="L416" href="#L416">416</a> <em class="jxr_javadoccomment">         * is less than, equal to, or greater than the second.</em>
+<a class="jxr_linenumber" name="L417" href="#L417">417</a> <em class="jxr_javadoccomment">         */</em>
+<a class="jxr_linenumber" name="L418" href="#L418">418</a>         @Override
+<a class="jxr_linenumber" name="L419" href="#L419">419</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">int</strong> compare(<strong class="jxr_keyword">final</strong> Option opt1, <strong class="jxr_keyword">final</strong> Option opt2) {
+<a class="jxr_linenumber" name="L420" href="#L420">420</a>             <strong class="jxr_keyword">return</strong> getKey(opt1).compareToIgnoreCase(getKey(opt2));
+<a class="jxr_linenumber" name="L421" href="#L421">421</a>         }
+<a class="jxr_linenumber" name="L422" href="#L422">422</a>     }
+<a class="jxr_linenumber" name="L423" href="#L423">423</a> }
 </pre>
 <hr/>
 <div id="footer">Copyright &#169; 2006&#x2013;2024 <a href="https://www.apache.org">Apache Software Foundation</a>. All rights reserved.</div>
diff --git a/rat0161/apache-rat-core/xref/org/apache/rat/ReportConfiguration.html b/rat0161/apache-rat-core/xref/org/apache/rat/ReportConfiguration.html
index a36f2b20..23a1560b 100644
--- a/rat0161/apache-rat-core/xref/org/apache/rat/ReportConfiguration.html
+++ b/rat0161/apache-rat-core/xref/org/apache/rat/ReportConfiguration.html
@@ -271,7 +271,7 @@
 <a class="jxr_linenumber" name="L263" href="#L263">263</a> <em class="jxr_javadoccomment">     * closed consider wrapping it in a {@code NoCloseOutputStream}</em>
 <a class="jxr_linenumber" name="L264" href="#L264">264</a> <em class="jxr_javadoccomment">     * </em>
 <a class="jxr_linenumber" name="L265" href="#L265">265</a> <em class="jxr_javadoccomment">     * @param out The OutputStream supplier that provides the output stream to write</em>
-<a class="jxr_linenumber" name="L266" href="#L266">266</a> <em class="jxr_javadoccomment">     * the report to. (may be null)</em>
+<a class="jxr_linenumber" name="L266" href="#L266">266</a> <em class="jxr_javadoccomment">     * the report to. A null value will use System.out.</em>
 <a class="jxr_linenumber" name="L267" href="#L267">267</a> <em class="jxr_javadoccomment">     * @see NoCloseOutputStream</em>
 <a class="jxr_linenumber" name="L268" href="#L268">268</a> <em class="jxr_javadoccomment">     */</em>
 <a class="jxr_linenumber" name="L269" href="#L269">269</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setOut(IOSupplier&lt;OutputStream&gt; out) {
diff --git a/rat0161/apache-rat-core/xref/org/apache/rat/analysis/DefaultAnalyserFactory.html b/rat0161/apache-rat-core/xref/org/apache/rat/analysis/DefaultAnalyserFactory.html
index b70dad5b..9fc659b3 100644
--- a/rat0161/apache-rat-core/xref/org/apache/rat/analysis/DefaultAnalyserFactory.html
+++ b/rat0161/apache-rat-core/xref/org/apache/rat/analysis/DefaultAnalyserFactory.html
@@ -37,60 +37,67 @@
 <a class="jxr_linenumber" name="L29" href="#L29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.rat.document.impl.guesser.BinaryGuesser;
 <a class="jxr_linenumber" name="L30" href="#L30">30</a>  <strong class="jxr_keyword">import</strong> org.apache.rat.document.impl.guesser.NoteGuesser;
 <a class="jxr_linenumber" name="L31" href="#L31">31</a>  <strong class="jxr_keyword">import</strong> org.apache.rat.license.ILicense;
-<a class="jxr_linenumber" name="L32" href="#L32">32</a>  
-<a class="jxr_linenumber" name="L33" href="#L33">33</a>  <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L34" href="#L34">34</a>  <em class="jxr_javadoccomment"> * Creates default analysers.</em>
-<a class="jxr_linenumber" name="L35" href="#L35">35</a>  <em class="jxr_javadoccomment"> */</em>
-<a class="jxr_linenumber" name="L36" href="#L36">36</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a name="DefaultAnalyserFactory" href="../../../../org/apache/rat/analysis/DefaultAnalyserFactory.html#DefaultAnalyserFactory">DefaultAnalyserFactory</a> {
-<a class="jxr_linenumber" name="L37" href="#L37">37</a>  
-<a class="jxr_linenumber" name="L38" href="#L38">38</a>      <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L39" href="#L39">39</a>  <em class="jxr_javadoccomment">     * Creates a DocumentAnalyser from a collection of ILicenses.</em>
-<a class="jxr_linenumber" name="L40" href="#L40">40</a>  <em class="jxr_javadoccomment">     * @param licenses The licenses to use in  the Analyser.</em>
-<a class="jxr_linenumber" name="L41" href="#L41">41</a>  <em class="jxr_javadoccomment">     * @return A document analyser that uses the provides licenses.</em>
-<a class="jxr_linenumber" name="L42" href="#L42">42</a>  <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="L43" href="#L43">43</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <a name="IDocumentAnalyser" href="../../../../org/apache/rat/document/IDocumentAnalyser.html#IDocumentAnalyser">IDocumentAnalyser</a> createDefaultAnalyser(Collection&lt;ILicense&gt; licenses) {
-<a class="jxr_linenumber" name="L44" href="#L44">44</a>          <strong class="jxr_keyword">if</strong> (licenses.isEmpty()) {
-<a class="jxr_linenumber" name="L45" href="#L45">45</a>              <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a name="ConfigurationException" href="../../../../org/apache/rat/ConfigurationException.html#ConfigurationException">ConfigurationException</a>(<span class="jxr_string">"At least one license must be defined"</span>);
-<a class="jxr_linenumber" name="L46" href="#L46">46</a>          }
-<a class="jxr_linenumber" name="L47" href="#L47">47</a>          <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> DefaultAnalyser(<strong class="jxr_keyword">new</strong> <a name="LicenseCollection" href="../../../../org/apache/rat/analysis/LicenseCollection.html#LicenseCollection">LicenseCollection</a>(licenses));
-<a class="jxr_linenumber" name="L48" href="#L48">48</a>      }
-<a class="jxr_linenumber" name="L49" href="#L49">49</a>  
-<a class="jxr_linenumber" name="L50" href="#L50">50</a>      <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L51" href="#L51">51</a>  <em class="jxr_javadoccomment">     * A DocumentAnalyser for the license</em>
-<a class="jxr_linenumber" name="L52" href="#L52">52</a>  <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="L53" href="#L53">53</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">class</strong> DefaultAnalyser <strong class="jxr_keyword">implements</strong> <a name="IDocumentAnalyser" href="../../../../org/apache/rat/document/IDocumentAnalyser.html#IDocumentAnalyser">IDocumentAnalyser</a> {
-<a class="jxr_linenumber" name="L54" href="#L54">54</a>  
-<a class="jxr_linenumber" name="L55" href="#L55">55</a>          <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L56" href="#L56">56</a>  <em class="jxr_javadoccomment">         * The license to analyze</em>
-<a class="jxr_linenumber" name="L57" href="#L57">57</a>  <em class="jxr_javadoccomment">         */</em>
-<a class="jxr_linenumber" name="L58" href="#L58">58</a>          <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a name="ILicense" href="../../../../org/apache/rat/license/ILicense.html#ILicense">ILicense</a> license;
-<a class="jxr_linenumber" name="L59" href="#L59">59</a>  
-<a class="jxr_linenumber" name="L60" href="#L60">60</a>          <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L61" href="#L61">61</a>  <em class="jxr_javadoccomment">         * Constructs a DocumentAnalyser for the specified license.</em>
-<a class="jxr_linenumber" name="L62" href="#L62">62</a>  <em class="jxr_javadoccomment">         * @param license The license to analyse</em>
-<a class="jxr_linenumber" name="L63" href="#L63">63</a>  <em class="jxr_javadoccomment">         */</em>
-<a class="jxr_linenumber" name="L64" href="#L64">64</a>          <strong class="jxr_keyword">public</strong> DefaultAnalyser(<strong class="jxr_keyword">final</strong> <a name="ILicense" href="../../../../org/apache/rat/license/ILicense.html#ILicense">ILicense</a> license) {
-<a class="jxr_linenumber" name="L65" href="#L65">65</a>              <strong class="jxr_keyword">this</strong>.license = license;
-<a class="jxr_linenumber" name="L66" href="#L66">66</a>          }
-<a class="jxr_linenumber" name="L67" href="#L67">67</a>  
-<a class="jxr_linenumber" name="L68" href="#L68">68</a>          @Override
-<a class="jxr_linenumber" name="L69" href="#L69">69</a>          <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> analyse(<a name="Document" href="../../../../org/apache/rat/api/Document.html#Document">Document</a> document) <strong class="jxr_keyword">throws</strong> <a name="RatDocumentAnalysisException" href="../../../../org/apache/rat/document/RatDocumentAnalysisException.html#RatDocumentAnalysisException">RatDocumentAnalysisException</a> {
-<a class="jxr_linenumber" name="L70" href="#L70">70</a>              <strong class="jxr_keyword">final</strong> MetaData.Datum documentCategory;
-<a class="jxr_linenumber" name="L71" href="#L71">71</a>              <strong class="jxr_keyword">if</strong> (NoteGuesser.isNote(document)) {
-<a class="jxr_linenumber" name="L72" href="#L72">72</a>                  documentCategory = MetaData.RAT_DOCUMENT_CATEGORY_DATUM_NOTICE;
-<a class="jxr_linenumber" name="L73" href="#L73">73</a>              } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (ArchiveGuesser.isArchive(document)) {
-<a class="jxr_linenumber" name="L74" href="#L74">74</a>                  documentCategory = MetaData.RAT_DOCUMENT_CATEGORY_DATUM_ARCHIVE;
-<a class="jxr_linenumber" name="L75" href="#L75">75</a>              } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (BinaryGuesser.isBinary(document)) {
-<a class="jxr_linenumber" name="L76" href="#L76">76</a>                  documentCategory = MetaData.RAT_DOCUMENT_CATEGORY_DATUM_BINARY;
-<a class="jxr_linenumber" name="L77" href="#L77">77</a>              } <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="L78" href="#L78">78</a>                  documentCategory = MetaData.RAT_DOCUMENT_CATEGORY_DATUM_STANDARD;
-<a class="jxr_linenumber" name="L79" href="#L79">79</a>                  <strong class="jxr_keyword">final</strong> <a name="DocumentHeaderAnalyser" href="../../../../org/apache/rat/analysis/DocumentHeaderAnalyser.html#DocumentHeaderAnalyser">DocumentHeaderAnalyser</a> headerAnalyser = <strong class="jxr_keyword">new</strong> <a name="DocumentHeaderAnalyser" href="../../../../org/apache/rat/analysis/DocumentHeaderAnalyser.html#DocumentHeaderAnalyser">DocumentHeaderAnalyser</a>(license);
-<a class="jxr_linenumber" name="L80" href="#L80">80</a>                  headerAnalyser.analyse(document);
-<a class="jxr_linenumber" name="L81" href="#L81">81</a>              }
-<a class="jxr_linenumber" name="L82" href="#L82">82</a>              document.getMetaData().set(documentCategory);
-<a class="jxr_linenumber" name="L83" href="#L83">83</a>          }
-<a class="jxr_linenumber" name="L84" href="#L84">84</a>      }
-<a class="jxr_linenumber" name="L85" href="#L85">85</a>  }
+<a class="jxr_linenumber" name="L32" href="#L32">32</a>  <strong class="jxr_keyword">import</strong> org.apache.rat.utils.Log;
+<a class="jxr_linenumber" name="L33" href="#L33">33</a>  <strong class="jxr_keyword">import</strong> org.apache.rat.utils.Log.Level;
+<a class="jxr_linenumber" name="L34" href="#L34">34</a>  
+<a class="jxr_linenumber" name="L35" href="#L35">35</a>  <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L36" href="#L36">36</a>  <em class="jxr_javadoccomment"> * Creates default analysers.</em>
+<a class="jxr_linenumber" name="L37" href="#L37">37</a>  <em class="jxr_javadoccomment"> */</em>
+<a class="jxr_linenumber" name="L38" href="#L38">38</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a name="DefaultAnalyserFactory" href="../../../../org/apache/rat/analysis/DefaultAnalyserFactory.html#DefaultAnalyserFactory">DefaultAnalyserFactory</a> {
+<a class="jxr_linenumber" name="L39" href="#L39">39</a>  
+<a class="jxr_linenumber" name="L40" href="#L40">40</a>      <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L41" href="#L41">41</a>  <em class="jxr_javadoccomment">     * Creates a DocumentAnalyser from a collection of ILicenses.</em>
+<a class="jxr_linenumber" name="L42" href="#L42">42</a>  <em class="jxr_javadoccomment">     * @param licenses The licenses to use in  the Analyser.</em>
+<a class="jxr_linenumber" name="L43" href="#L43">43</a>  <em class="jxr_javadoccomment">     * @return A document analyser that uses the provides licenses.</em>
+<a class="jxr_linenumber" name="L44" href="#L44">44</a>  <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="L45" href="#L45">45</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <a name="IDocumentAnalyser" href="../../../../org/apache/rat/document/IDocumentAnalyser.html#IDocumentAnalyser">IDocumentAnalyser</a> createDefaultAnalyser(<a name="Log" href="../../../../org/apache/rat/utils/Log.html#Log">Log</a> log, Collection&lt;ILicense&gt; licenses) {
+<a class="jxr_linenumber" name="L46" href="#L46">46</a>          <strong class="jxr_keyword">if</strong> (licenses.isEmpty()) {
+<a class="jxr_linenumber" name="L47" href="#L47">47</a>              <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a name="ConfigurationException" href="../../../../org/apache/rat/ConfigurationException.html#ConfigurationException">ConfigurationException</a>(<span class="jxr_string">"At least one license must be defined"</span>);
+<a class="jxr_linenumber" name="L48" href="#L48">48</a>          }
+<a class="jxr_linenumber" name="L49" href="#L49">49</a>          log.debug(<span class="jxr_string">"Licenses in Test"</span>);
+<a class="jxr_linenumber" name="L50" href="#L50">50</a>          licenses.forEach(log::debug);
+<a class="jxr_linenumber" name="L51" href="#L51">51</a>          <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> DefaultAnalyser(log, <strong class="jxr_keyword">new</strong> <a name="LicenseCollection" href="../../../../org/apache/rat/analysis/LicenseCollection.html#LicenseCollection">LicenseCollection</a>(licenses));
+<a class="jxr_linenumber" name="L52" href="#L52">52</a>      }
+<a class="jxr_linenumber" name="L53" href="#L53">53</a>  
+<a class="jxr_linenumber" name="L54" href="#L54">54</a>      <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L55" href="#L55">55</a>  <em class="jxr_javadoccomment">     * A DocumentAnalyser for the license</em>
+<a class="jxr_linenumber" name="L56" href="#L56">56</a>  <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="L57" href="#L57">57</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">class</strong> DefaultAnalyser <strong class="jxr_keyword">implements</strong> <a name="IDocumentAnalyser" href="../../../../org/apache/rat/document/IDocumentAnalyser.html#IDocumentAnalyser">IDocumentAnalyser</a> {
+<a class="jxr_linenumber" name="L58" href="#L58">58</a>  
+<a class="jxr_linenumber" name="L59" href="#L59">59</a>          <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L60" href="#L60">60</a>  <em class="jxr_javadoccomment">         * The license to analyze</em>
+<a class="jxr_linenumber" name="L61" href="#L61">61</a>  <em class="jxr_javadoccomment">         */</em>
+<a class="jxr_linenumber" name="L62" href="#L62">62</a>          <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a name="ILicense" href="../../../../org/apache/rat/license/ILicense.html#ILicense">ILicense</a> license;
+<a class="jxr_linenumber" name="L63" href="#L63">63</a>          <em class="jxr_javadoccomment">/** The log to use */</em>
+<a class="jxr_linenumber" name="L64" href="#L64">64</a>          <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a name="Log" href="../../../../org/apache/rat/utils/Log.html#Log">Log</a> log;
+<a class="jxr_linenumber" name="L65" href="#L65">65</a>  
+<a class="jxr_linenumber" name="L66" href="#L66">66</a>          <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L67" href="#L67">67</a>  <em class="jxr_javadoccomment">         * Constructs a DocumentAnalyser for the specified license.</em>
+<a class="jxr_linenumber" name="L68" href="#L68">68</a>  <em class="jxr_javadoccomment">         * @param license The license to analyse</em>
+<a class="jxr_linenumber" name="L69" href="#L69">69</a>  <em class="jxr_javadoccomment">         */</em>
+<a class="jxr_linenumber" name="L70" href="#L70">70</a>          <strong class="jxr_keyword">public</strong> DefaultAnalyser(<strong class="jxr_keyword">final</strong> <a name="Log" href="../../../../org/apache/rat/utils/Log.html#Log">Log</a> log, <strong class="jxr_keyword">final</strong> <a name="ILicense" href="../../../../org/apache/rat/license/ILicense.html#ILicense">ILicense</a> license) {
+<a class="jxr_linenumber" name="L71" href="#L71">71</a>              <strong class="jxr_keyword">this</strong>.license = license;
+<a class="jxr_linenumber" name="L72" href="#L72">72</a>              <strong class="jxr_keyword">this</strong>.log = log;
+<a class="jxr_linenumber" name="L73" href="#L73">73</a>          }
+<a class="jxr_linenumber" name="L74" href="#L74">74</a>  
+<a class="jxr_linenumber" name="L75" href="#L75">75</a>          @Override
+<a class="jxr_linenumber" name="L76" href="#L76">76</a>          <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> analyse(<a name="Document" href="../../../../org/apache/rat/api/Document.html#Document">Document</a> document) <strong class="jxr_keyword">throws</strong> <a name="RatDocumentAnalysisException" href="../../../../org/apache/rat/document/RatDocumentAnalysisException.html#RatDocumentAnalysisException">RatDocumentAnalysisException</a> {
+<a class="jxr_linenumber" name="L77" href="#L77">77</a>              <strong class="jxr_keyword">final</strong> MetaData.Datum documentCategory;
+<a class="jxr_linenumber" name="L78" href="#L78">78</a>              <strong class="jxr_keyword">if</strong> (NoteGuesser.isNote(document)) {
+<a class="jxr_linenumber" name="L79" href="#L79">79</a>                  documentCategory = MetaData.RAT_DOCUMENT_CATEGORY_DATUM_NOTICE;
+<a class="jxr_linenumber" name="L80" href="#L80">80</a>              } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (ArchiveGuesser.isArchive(document)) {
+<a class="jxr_linenumber" name="L81" href="#L81">81</a>                  documentCategory = MetaData.RAT_DOCUMENT_CATEGORY_DATUM_ARCHIVE;
+<a class="jxr_linenumber" name="L82" href="#L82">82</a>              } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (BinaryGuesser.isBinary(document)) {
+<a class="jxr_linenumber" name="L83" href="#L83">83</a>                  documentCategory = MetaData.RAT_DOCUMENT_CATEGORY_DATUM_BINARY;
+<a class="jxr_linenumber" name="L84" href="#L84">84</a>              } <strong class="jxr_keyword">else</strong> {
+<a class="jxr_linenumber" name="L85" href="#L85">85</a>                  documentCategory = MetaData.RAT_DOCUMENT_CATEGORY_DATUM_STANDARD;
+<a class="jxr_linenumber" name="L86" href="#L86">86</a>                  <strong class="jxr_keyword">final</strong> <a name="DocumentHeaderAnalyser" href="../../../../org/apache/rat/analysis/DocumentHeaderAnalyser.html#DocumentHeaderAnalyser">DocumentHeaderAnalyser</a> headerAnalyser = <strong class="jxr_keyword">new</strong> <a name="DocumentHeaderAnalyser" href="../../../../org/apache/rat/analysis/DocumentHeaderAnalyser.html#DocumentHeaderAnalyser">DocumentHeaderAnalyser</a>(log, license);
+<a class="jxr_linenumber" name="L87" href="#L87">87</a>                  headerAnalyser.analyse(document);
+<a class="jxr_linenumber" name="L88" href="#L88">88</a>              }
+<a class="jxr_linenumber" name="L89" href="#L89">89</a>              document.getMetaData().set(documentCategory);
+<a class="jxr_linenumber" name="L90" href="#L90">90</a>          }
+<a class="jxr_linenumber" name="L91" href="#L91">91</a>      }
+<a class="jxr_linenumber" name="L92" href="#L92">92</a>  }
 </pre>
 <hr/>
 <div id="footer">Copyright &#169; 2006&#x2013;2024 <a href="https://www.apache.org">Apache Software Foundation</a>. All rights reserved.</div>
diff --git a/rat0161/apache-rat-core/xref/org/apache/rat/analysis/DocumentHeaderAnalyser.html b/rat0161/apache-rat-core/xref/org/apache/rat/analysis/DocumentHeaderAnalyser.html
index 91b99a3e..23474099 100644
--- a/rat0161/apache-rat-core/xref/org/apache/rat/analysis/DocumentHeaderAnalyser.html
+++ b/rat0161/apache-rat-core/xref/org/apache/rat/analysis/DocumentHeaderAnalyser.html
@@ -33,41 +33,47 @@
 <a class="jxr_linenumber" name="L25" href="#L25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.rat.document.IDocumentAnalyser;
 <a class="jxr_linenumber" name="L26" href="#L26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.rat.document.RatDocumentAnalysisException;
 <a class="jxr_linenumber" name="L27" href="#L27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.rat.license.ILicense;
-<a class="jxr_linenumber" name="L28" href="#L28">28</a>  
-<a class="jxr_linenumber" name="L29" href="#L29">29</a>  <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L30" href="#L30">30</a>  <em class="jxr_javadoccomment"> * A Document analyzer that analyses document headers for a license.</em>
-<a class="jxr_linenumber" name="L31" href="#L31">31</a>  <em class="jxr_javadoccomment"> */</em>
-<a class="jxr_linenumber" name="L32" href="#L32">32</a>  <strong class="jxr_keyword">class</strong> <a name="DocumentHeaderAnalyser" href="../../../../org/apache/rat/analysis/DocumentHeaderAnalyser.html#DocumentHeaderAnalyser">DocumentHeaderAnalyser</a> <strong class="jxr_keyword">implements</strong> <a name="IDocumentAnalyser" href="../../../../org/apache/rat/document/IDocumentAnalyser.html#IDocumentAnalyser">IDocumentAnalyser</a> {
-<a class="jxr_linenumber" name="L33" href="#L33">33</a>  
-<a class="jxr_linenumber" name="L34" href="#L34">34</a>      <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L35" href="#L35">35</a>  <em class="jxr_javadoccomment">     * The license to analyse</em>
-<a class="jxr_linenumber" name="L36" href="#L36">36</a>  <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="L37" href="#L37">37</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a name="ILicense" href="../../../../org/apache/rat/license/ILicense.html#ILicense">ILicense</a> license;
-<a class="jxr_linenumber" name="L38" href="#L38">38</a>  
-<a class="jxr_linenumber" name="L39" href="#L39">39</a>      <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L40" href="#L40">40</a>  <em class="jxr_javadoccomment">     * Constructs the HeaderAnalyser for the specific license.</em>
-<a class="jxr_linenumber" name="L41" href="#L41">41</a>  <em class="jxr_javadoccomment">     * </em>
-<a class="jxr_linenumber" name="L42" href="#L42">42</a>  <em class="jxr_javadoccomment">     * @param license The license to analyse</em>
-<a class="jxr_linenumber" name="L43" href="#L43">43</a>  <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="L44" href="#L44">44</a>      <strong class="jxr_keyword">public</strong> <a name="DocumentHeaderAnalyser" href="../../../../org/apache/rat/analysis/DocumentHeaderAnalyser.html#DocumentHeaderAnalyser">DocumentHeaderAnalyser</a>(<strong class="jxr_keyword">final</strong> <a name="ILicense" href="../../../../org/apache/rat/license/ILicense.html#ILicense">ILicense</a> license) {
-<a class="jxr_linenumber" name="L45" href="#L45">45</a>          <strong class="jxr_keyword">super</strong>();
-<a class="jxr_linenumber" name="L46" href="#L46">46</a>          <strong class="jxr_keyword">this</strong>.license = license;
-<a class="jxr_linenumber" name="L47" href="#L47">47</a>      }
-<a class="jxr_linenumber" name="L48" href="#L48">48</a>  
-<a class="jxr_linenumber" name="L49" href="#L49">49</a>      @Override
-<a class="jxr_linenumber" name="L50" href="#L50">50</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> analyse(<a name="Document" href="../../../../org/apache/rat/api/Document.html#Document">Document</a> document) <strong class="jxr_keyword">throws</strong> <a name="RatDocumentAnalysisException" href="../../../../org/apache/rat/document/RatDocumentAnalysisException.html#RatDocumentAnalysisException">RatDocumentAnalysisException</a> {
-<a class="jxr_linenumber" name="L51" href="#L51">51</a>          <strong class="jxr_keyword">try</strong> (Reader reader = document.reader()) {
-<a class="jxr_linenumber" name="L52" href="#L52">52</a>              <em class="jxr_comment">// TODO: worker function should be moved into this class</em>
-<a class="jxr_linenumber" name="L53" href="#L53">53</a>              <a name="HeaderCheckWorker" href="../../../../org/apache/rat/analysis/HeaderCheckWorker.html#HeaderCheckWorker">HeaderCheckWorker</a> worker = <strong class="jxr_keyword">new</strong> <a name="HeaderCheckWorker" href="../../../../org/apache/rat/analysis/HeaderCheckWorker.html#HeaderCheckWorker">HeaderCheckWorker</a>(reader, license, document);
-<a class="jxr_linenumber" name="L54" href="#L54">54</a>              worker.read();
-<a class="jxr_linenumber" name="L55" href="#L55">55</a>          } <strong class="jxr_keyword">catch</strong> (IOException e) {
-<a class="jxr_linenumber" name="L56" href="#L56">56</a>              <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a name="RatDocumentAnalysisException" href="../../../../org/apache/rat/document/RatDocumentAnalysisException.html#RatDocumentAnalysisException">RatDocumentAnalysisException</a>(<span class="jxr_string">"Cannot read header"</span>, e);
-<a class="jxr_linenumber" name="L57" href="#L57">57</a>          } <strong class="jxr_keyword">catch</strong> (<a name="RatHeaderAnalysisException" href="../../../../org/apache/rat/analysis/RatHeaderAnalysisException.html#RatHeaderAnalysisException">RatHeaderAnalysisException</a> e) {
-<a class="jxr_linenumber" name="L58" href="#L58">58</a>              <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a name="RatDocumentAnalysisException" href="../../../../org/apache/rat/document/RatDocumentAnalysisException.html#RatDocumentAnalysisException">RatDocumentAnalysisException</a>(<span class="jxr_string">"Cannot analyse header"</span>, e);
-<a class="jxr_linenumber" name="L59" href="#L59">59</a>          }
-<a class="jxr_linenumber" name="L60" href="#L60">60</a>      }
-<a class="jxr_linenumber" name="L61" href="#L61">61</a>  
-<a class="jxr_linenumber" name="L62" href="#L62">62</a>  }
+<a class="jxr_linenumber" name="L28" href="#L28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.rat.utils.Log;
+<a class="jxr_linenumber" name="L29" href="#L29">29</a>  
+<a class="jxr_linenumber" name="L30" href="#L30">30</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> java.lang.String.format;
+<a class="jxr_linenumber" name="L31" href="#L31">31</a>  
+<a class="jxr_linenumber" name="L32" href="#L32">32</a>  <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L33" href="#L33">33</a>  <em class="jxr_javadoccomment"> * A Document analyzer that analyses document headers for a license.</em>
+<a class="jxr_linenumber" name="L34" href="#L34">34</a>  <em class="jxr_javadoccomment"> */</em>
+<a class="jxr_linenumber" name="L35" href="#L35">35</a>  <strong class="jxr_keyword">class</strong> <a name="DocumentHeaderAnalyser" href="../../../../org/apache/rat/analysis/DocumentHeaderAnalyser.html#DocumentHeaderAnalyser">DocumentHeaderAnalyser</a> <strong class="jxr_keyword">implements</strong> <a name="IDocumentAnalyser" href="../../../../org/apache/rat/document/IDocumentAnalyser.html#IDocumentAnalyser">IDocumentAnalyser</a> {
+<a class="jxr_linenumber" name="L36" href="#L36">36</a>  
+<a class="jxr_linenumber" name="L37" href="#L37">37</a>      <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L38" href="#L38">38</a>  <em class="jxr_javadoccomment">     * The license to analyse</em>
+<a class="jxr_linenumber" name="L39" href="#L39">39</a>  <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="L40" href="#L40">40</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a name="ILicense" href="../../../../org/apache/rat/license/ILicense.html#ILicense">ILicense</a> license;
+<a class="jxr_linenumber" name="L41" href="#L41">41</a>      <em class="jxr_javadoccomment">/** the logger to use */</em>
+<a class="jxr_linenumber" name="L42" href="#L42">42</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a name="Log" href="../../../../org/apache/rat/utils/Log.html#Log">Log</a> log;
+<a class="jxr_linenumber" name="L43" href="#L43">43</a>  
+<a class="jxr_linenumber" name="L44" href="#L44">44</a>      <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L45" href="#L45">45</a>  <em class="jxr_javadoccomment">     * Constructs the HeaderAnalyser for the specific license.</em>
+<a class="jxr_linenumber" name="L46" href="#L46">46</a>  <em class="jxr_javadoccomment">     * </em>
+<a class="jxr_linenumber" name="L47" href="#L47">47</a>  <em class="jxr_javadoccomment">     * @param license The license to analyse</em>
+<a class="jxr_linenumber" name="L48" href="#L48">48</a>  <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="L49" href="#L49">49</a>      <strong class="jxr_keyword">public</strong> <a name="DocumentHeaderAnalyser" href="../../../../org/apache/rat/analysis/DocumentHeaderAnalyser.html#DocumentHeaderAnalyser">DocumentHeaderAnalyser</a>(<strong class="jxr_keyword">final</strong> <a name="Log" href="../../../../org/apache/rat/utils/Log.html#Log">Log</a> log, <strong class="jxr_keyword">final</strong> <a name="ILicense" href="../../../../org/apache/rat/license/ILicens [...]
+<a class="jxr_linenumber" name="L50" href="#L50">50</a>          <strong class="jxr_keyword">super</strong>();
+<a class="jxr_linenumber" name="L51" href="#L51">51</a>          <strong class="jxr_keyword">this</strong>.license = license;
+<a class="jxr_linenumber" name="L52" href="#L52">52</a>          <strong class="jxr_keyword">this</strong>.log = log;
+<a class="jxr_linenumber" name="L53" href="#L53">53</a>      }
+<a class="jxr_linenumber" name="L54" href="#L54">54</a>  
+<a class="jxr_linenumber" name="L55" href="#L55">55</a>      @Override
+<a class="jxr_linenumber" name="L56" href="#L56">56</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> analyse(<a name="Document" href="../../../../org/apache/rat/api/Document.html#Document">Document</a> document) <strong class="jxr_keyword">throws</strong> <a name="RatDocumentAnalysisException" href="../../../../org/apache/rat/document/RatDocumentAnalysisException.html#RatDocumentAnalysisException">RatDocumentAnalysisException</a> {
+<a class="jxr_linenumber" name="L57" href="#L57">57</a>          <strong class="jxr_keyword">try</strong> (Reader reader = document.reader()) {
+<a class="jxr_linenumber" name="L58" href="#L58">58</a>              log.debug(format(<span class="jxr_string">"Processing: %s"</span>, document));
+<a class="jxr_linenumber" name="L59" href="#L59">59</a>              <a name="HeaderCheckWorker" href="../../../../org/apache/rat/analysis/HeaderCheckWorker.html#HeaderCheckWorker">HeaderCheckWorker</a> worker = <strong class="jxr_keyword">new</strong> <a name="HeaderCheckWorker" href="../../../../org/apache/rat/analysis/HeaderCheckWorker.html#HeaderCheckWorker">HeaderCheckWorker</a>(reader, license, document);
+<a class="jxr_linenumber" name="L60" href="#L60">60</a>              worker.read();
+<a class="jxr_linenumber" name="L61" href="#L61">61</a>          } <strong class="jxr_keyword">catch</strong> (IOException e) {
+<a class="jxr_linenumber" name="L62" href="#L62">62</a>              <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a name="RatDocumentAnalysisException" href="../../../../org/apache/rat/document/RatDocumentAnalysisException.html#RatDocumentAnalysisException">RatDocumentAnalysisException</a>(<span class="jxr_string">"Cannot read header"</span>, e);
+<a class="jxr_linenumber" name="L63" href="#L63">63</a>          } <strong class="jxr_keyword">catch</strong> (<a name="RatHeaderAnalysisException" href="../../../../org/apache/rat/analysis/RatHeaderAnalysisException.html#RatHeaderAnalysisException">RatHeaderAnalysisException</a> e) {
+<a class="jxr_linenumber" name="L64" href="#L64">64</a>              <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a name="RatDocumentAnalysisException" href="../../../../org/apache/rat/document/RatDocumentAnalysisException.html#RatDocumentAnalysisException">RatDocumentAnalysisException</a>(<span class="jxr_string">"Cannot analyse header"</span>, e);
+<a class="jxr_linenumber" name="L65" href="#L65">65</a>          }
+<a class="jxr_linenumber" name="L66" href="#L66">66</a>      }
+<a class="jxr_linenumber" name="L67" href="#L67">67</a>  
+<a class="jxr_linenumber" name="L68" href="#L68">68</a>  }
 </pre>
 <hr/>
 <div id="footer">Copyright &#169; 2006&#x2013;2024 <a href="https://www.apache.org">Apache Software Foundation</a>. All rights reserved.</div>
diff --git a/rat0161/apache-rat-core/xref/org/apache/rat/analysis/LicenseCollection.html b/rat0161/apache-rat-core/xref/org/apache/rat/analysis/LicenseCollection.html
index 5aeeac3e..67871eb0 100644
--- a/rat0161/apache-rat-core/xref/org/apache/rat/analysis/LicenseCollection.html
+++ b/rat0161/apache-rat-core/xref/org/apache/rat/analysis/LicenseCollection.html
@@ -27,118 +27,119 @@
 <a class="jxr_linenumber" name="L19" href="#L19">19</a>  <strong class="jxr_keyword">package</strong> org.apache.rat.analysis;
 <a class="jxr_linenumber" name="L20" href="#L20">20</a>  
 <a class="jxr_linenumber" name="L21" href="#L21">21</a>  <strong class="jxr_keyword">import</strong> java.util.Collection;
-<a class="jxr_linenumber" name="L22" href="#L22">22</a>  
-<a class="jxr_linenumber" name="L23" href="#L23">23</a>  <strong class="jxr_keyword">import</strong> org.apache.rat.analysis.matchers.AbstractMatcherContainer;
-<a class="jxr_linenumber" name="L24" href="#L24">24</a>  <strong class="jxr_keyword">import</strong> org.apache.rat.license.ILicense;
-<a class="jxr_linenumber" name="L25" href="#L25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.rat.license.ILicenseFamily;
-<a class="jxr_linenumber" name="L26" href="#L26">26</a>  
-<a class="jxr_linenumber" name="L27" href="#L27">27</a>  <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L28" href="#L28">28</a>  <em class="jxr_javadoccomment"> * A collection of ILicenses that acts as a single License for purposes of Analysis.</em>
-<a class="jxr_linenumber" name="L29" href="#L29">29</a>  <em class="jxr_javadoccomment"> * &lt;p&gt;</em>
-<a class="jxr_linenumber" name="L30" href="#L30">30</a>  <em class="jxr_javadoccomment"> * This class process each license in turn on each {@code matches(String)} call.  When a match is found the </em>
-<a class="jxr_linenumber" name="L31" href="#L31">31</a>  <em class="jxr_javadoccomment"> * ILicenseFamily for the matching license is captured and used as the family for this license. If no matching </em>
-<a class="jxr_linenumber" name="L32" href="#L32">32</a>  <em class="jxr_javadoccomment"> * license has been found the default {@code dummy} license category is used.</em>
-<a class="jxr_linenumber" name="L33" href="#L33">33</a>  <em class="jxr_javadoccomment"> */</em>
-<a class="jxr_linenumber" name="L34" href="#L34">34</a>  <strong class="jxr_keyword">class</strong> <a name="LicenseCollection" href="../../../../org/apache/rat/analysis/LicenseCollection.html#LicenseCollection">LicenseCollection</a> <strong class="jxr_keyword">extends</strong> <a name="AbstractMatcherContainer" href="../../../../org/apache/rat/analysis/matchers/AbstractMatcherContainer.html#AbstractMatcherContainer">AbstractMatcherContainer</a> <strong class="jxr_keyword">implements</st [...]
-<a class="jxr_linenumber" name="L35" href="#L35">35</a>  
-<a class="jxr_linenumber" name="L36" href="#L36">36</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <a name="ILicenseFamily" href="../../../../org/apache/rat/license/ILicenseFamily.html#ILicenseFamily">ILicenseFamily</a> DEFAULT = ILicenseFamily.builder().setLicenseFamilyCategory(<span class="jxr_string">"Dummy"</span>)
-<a class="jxr_linenumber" name="L37" href="#L37">37</a>              .setLicenseFamilyName(<span class="jxr_string">"HeaderMatcherCollection default license family"</span>).build();
-<a class="jxr_linenumber" name="L38" href="#L38">38</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> Collection&lt;ILicense&gt; enclosed;
-<a class="jxr_linenumber" name="L39" href="#L39">39</a>      <strong class="jxr_keyword">private</strong> <a name="ILicense" href="../../../../org/apache/rat/license/ILicense.html#ILicense">ILicense</a> matchingLicense;
-<a class="jxr_linenumber" name="L40" href="#L40">40</a>      <strong class="jxr_keyword">private</strong> State lastState;
-<a class="jxr_linenumber" name="L41" href="#L41">41</a>  
-<a class="jxr_linenumber" name="L42" href="#L42">42</a>      <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L43" href="#L43">43</a>  <em class="jxr_javadoccomment">     * Constructs the LicenseCollection from the provided ILicense collection.</em>
-<a class="jxr_linenumber" name="L44" href="#L44">44</a>  <em class="jxr_javadoccomment">     * @param enclosed The collection of ILicenses to compose this License implementation from.  May not be null.</em>
-<a class="jxr_linenumber" name="L45" href="#L45">45</a>  <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="L46" href="#L46">46</a>      <strong class="jxr_keyword">public</strong> <a name="LicenseCollection" href="../../../../org/apache/rat/analysis/LicenseCollection.html#LicenseCollection">LicenseCollection</a>(Collection&lt;ILicense&gt; enclosed) {
-<a class="jxr_linenumber" name="L47" href="#L47">47</a>          <strong class="jxr_keyword">super</strong>(enclosed);
-<a class="jxr_linenumber" name="L48" href="#L48">48</a>          <strong class="jxr_keyword">this</strong>.enclosed = enclosed;
-<a class="jxr_linenumber" name="L49" href="#L49">49</a>          <strong class="jxr_keyword">this</strong>.matchingLicense = <strong class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="L50" href="#L50">50</a>          <strong class="jxr_keyword">this</strong>.lastState = State.i;
-<a class="jxr_linenumber" name="L51" href="#L51">51</a>      }
-<a class="jxr_linenumber" name="L52" href="#L52">52</a>  
-<a class="jxr_linenumber" name="L53" href="#L53">53</a>      @Override
-<a class="jxr_linenumber" name="L54" href="#L54">54</a>      <strong class="jxr_keyword">public</strong> String getId() {
-<a class="jxr_linenumber" name="L55" href="#L55">55</a>          <strong class="jxr_keyword">return</strong> <span class="jxr_string">"Default License Collection"</span>;
-<a class="jxr_linenumber" name="L56" href="#L56">56</a>      }
-<a class="jxr_linenumber" name="L57" href="#L57">57</a>  
-<a class="jxr_linenumber" name="L58" href="#L58">58</a>      @Override
-<a class="jxr_linenumber" name="L59" href="#L59">59</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> reset() {
-<a class="jxr_linenumber" name="L60" href="#L60">60</a>          enclosed.forEach(ILicense::reset);
-<a class="jxr_linenumber" name="L61" href="#L61">61</a>          <strong class="jxr_keyword">this</strong>.lastState = State.i;
-<a class="jxr_linenumber" name="L62" href="#L62">62</a>          <strong class="jxr_keyword">this</strong>.matchingLicense = <strong class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="L63" href="#L63">63</a>      }
-<a class="jxr_linenumber" name="L64" href="#L64">64</a>  
-<a class="jxr_linenumber" name="L65" href="#L65">65</a>      @Override
-<a class="jxr_linenumber" name="L66" href="#L66">66</a>      <strong class="jxr_keyword">public</strong> State matches(String line) {
-<a class="jxr_linenumber" name="L67" href="#L67">67</a>          State dflt = State.f;
-<a class="jxr_linenumber" name="L68" href="#L68">68</a>          <strong class="jxr_keyword">for</strong> (<a name="ILicense" href="../../../../org/apache/rat/license/ILicense.html#ILicense">ILicense</a> license : enclosed) {
-<a class="jxr_linenumber" name="L69" href="#L69">69</a>              <strong class="jxr_keyword">switch</strong> (license.matches(line)) {
-<a class="jxr_linenumber" name="L70" href="#L70">70</a>              <strong class="jxr_keyword">case</strong> t:
-<a class="jxr_linenumber" name="L71" href="#L71">71</a>                  <strong class="jxr_keyword">this</strong>.matchingLicense = license;
-<a class="jxr_linenumber" name="L72" href="#L72">72</a>                  lastState = State.t;
-<a class="jxr_linenumber" name="L73" href="#L73">73</a>                  <strong class="jxr_keyword">return</strong> State.t;
-<a class="jxr_linenumber" name="L74" href="#L74">74</a>              <strong class="jxr_keyword">case</strong> i:
-<a class="jxr_linenumber" name="L75" href="#L75">75</a>                  dflt = State.i;
-<a class="jxr_linenumber" name="L76" href="#L76">76</a>                  <strong class="jxr_keyword">break</strong>;
-<a class="jxr_linenumber" name="L77" href="#L77">77</a>              <strong class="jxr_keyword">default</strong>:
-<a class="jxr_linenumber" name="L78" href="#L78">78</a>                  <em class="jxr_comment">// do nothing</em>
-<a class="jxr_linenumber" name="L79" href="#L79">79</a>                  <strong class="jxr_keyword">break</strong>;
-<a class="jxr_linenumber" name="L80" href="#L80">80</a>              }
-<a class="jxr_linenumber" name="L81" href="#L81">81</a>          }
-<a class="jxr_linenumber" name="L82" href="#L82">82</a>          lastState = dflt;
-<a class="jxr_linenumber" name="L83" href="#L83">83</a>          <strong class="jxr_keyword">return</strong> dflt;
-<a class="jxr_linenumber" name="L84" href="#L84">84</a>      }
-<a class="jxr_linenumber" name="L85" href="#L85">85</a>  
-<a class="jxr_linenumber" name="L86" href="#L86">86</a>      @Override
-<a class="jxr_linenumber" name="L87" href="#L87">87</a>      <strong class="jxr_keyword">public</strong> State currentState() {
-<a class="jxr_linenumber" name="L88" href="#L88">88</a>          <strong class="jxr_keyword">if</strong> (lastState == State.t) {
-<a class="jxr_linenumber" name="L89" href="#L89">89</a>              <strong class="jxr_keyword">return</strong> lastState;
-<a class="jxr_linenumber" name="L90" href="#L90">90</a>          }
-<a class="jxr_linenumber" name="L91" href="#L91">91</a>          <strong class="jxr_keyword">for</strong> (<a name="ILicense" href="../../../../org/apache/rat/license/ILicense.html#ILicense">ILicense</a> license : enclosed) {
-<a class="jxr_linenumber" name="L92" href="#L92">92</a>              <strong class="jxr_keyword">switch</strong> (license.currentState()) {
-<a class="jxr_linenumber" name="L93" href="#L93">93</a>              <strong class="jxr_keyword">case</strong> t:
-<a class="jxr_linenumber" name="L94" href="#L94">94</a>                  <strong class="jxr_keyword">this</strong>.matchingLicense = license;
-<a class="jxr_linenumber" name="L95" href="#L95">95</a>                  lastState = State.t;
-<a class="jxr_linenumber" name="L96" href="#L96">96</a>                  <strong class="jxr_keyword">return</strong> lastState;
-<a class="jxr_linenumber" name="L97" href="#L97">97</a>              <strong class="jxr_keyword">case</strong> i:
-<a class="jxr_linenumber" name="L98" href="#L98">98</a>                  lastState = State.i;
-<a class="jxr_linenumber" name="L99" href="#L99">99</a>                  <strong class="jxr_keyword">return</strong> lastState;
-<a class="jxr_linenumber" name="L100" href="#L100">100</a>             <strong class="jxr_keyword">case</strong> f:
-<a class="jxr_linenumber" name="L101" href="#L101">101</a>                 <em class="jxr_comment">// do nothing;</em>
-<a class="jxr_linenumber" name="L102" href="#L102">102</a>                 <strong class="jxr_keyword">break</strong>;
-<a class="jxr_linenumber" name="L103" href="#L103">103</a>             }
-<a class="jxr_linenumber" name="L104" href="#L104">104</a>         }
-<a class="jxr_linenumber" name="L105" href="#L105">105</a>         lastState = State.f;
-<a class="jxr_linenumber" name="L106" href="#L106">106</a>         <strong class="jxr_keyword">return</strong> lastState;
-<a class="jxr_linenumber" name="L107" href="#L107">107</a>     }
-<a class="jxr_linenumber" name="L108" href="#L108">108</a> 
-<a class="jxr_linenumber" name="L109" href="#L109">109</a>     @Override
-<a class="jxr_linenumber" name="L110" href="#L110">110</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">int</strong> compareTo(<a name="ILicense" href="../../../../org/apache/rat/license/ILicense.html#ILicense">ILicense</a> arg0) {
-<a class="jxr_linenumber" name="L111" href="#L111">111</a>         <strong class="jxr_keyword">return</strong> getLicenseFamily().compareTo(arg0.getLicenseFamily());
-<a class="jxr_linenumber" name="L112" href="#L112">112</a>     }
-<a class="jxr_linenumber" name="L113" href="#L113">113</a> 
-<a class="jxr_linenumber" name="L114" href="#L114">114</a>     @Override
-<a class="jxr_linenumber" name="L115" href="#L115">115</a>     <strong class="jxr_keyword">public</strong> <a name="ILicenseFamily" href="../../../../org/apache/rat/license/ILicenseFamily.html#ILicenseFamily">ILicenseFamily</a> getLicenseFamily() {
-<a class="jxr_linenumber" name="L116" href="#L116">116</a>         <strong class="jxr_keyword">return</strong> matchingLicense == <strong class="jxr_keyword">null</strong> ? DEFAULT : matchingLicense.getLicenseFamily();
-<a class="jxr_linenumber" name="L117" href="#L117">117</a>     }
-<a class="jxr_linenumber" name="L118" href="#L118">118</a> 
-<a class="jxr_linenumber" name="L119" href="#L119">119</a>     @Override
-<a class="jxr_linenumber" name="L120" href="#L120">120</a>     <strong class="jxr_keyword">public</strong> String getNotes() {
-<a class="jxr_linenumber" name="L121" href="#L121">121</a>         <strong class="jxr_keyword">return</strong> matchingLicense == <strong class="jxr_keyword">null</strong> ? <strong class="jxr_keyword">null</strong> : matchingLicense.getNotes();
-<a class="jxr_linenumber" name="L122" href="#L122">122</a>     }
-<a class="jxr_linenumber" name="L123" href="#L123">123</a> 
-<a class="jxr_linenumber" name="L124" href="#L124">124</a>     @Override
-<a class="jxr_linenumber" name="L125" href="#L125">125</a>     <strong class="jxr_keyword">public</strong> String derivedFrom() {
-<a class="jxr_linenumber" name="L126" href="#L126">126</a>         <strong class="jxr_keyword">return</strong> matchingLicense == <strong class="jxr_keyword">null</strong> ? <strong class="jxr_keyword">null</strong> : matchingLicense.derivedFrom();
-<a class="jxr_linenumber" name="L127" href="#L127">127</a>     }
-<a class="jxr_linenumber" name="L128" href="#L128">128</a>     
-<a class="jxr_linenumber" name="L129" href="#L129">129</a>     @Override
-<a class="jxr_linenumber" name="L130" href="#L130">130</a>     <strong class="jxr_keyword">public</strong> String getName() {
-<a class="jxr_linenumber" name="L131" href="#L131">131</a>         <strong class="jxr_keyword">return</strong> getLicenseFamily().getFamilyName();
-<a class="jxr_linenumber" name="L132" href="#L132">132</a>     }
-<a class="jxr_linenumber" name="L133" href="#L133">133</a> }
+<a class="jxr_linenumber" name="L22" href="#L22">22</a>  <strong class="jxr_keyword">import</strong> java.util.Collections;
+<a class="jxr_linenumber" name="L23" href="#L23">23</a>  
+<a class="jxr_linenumber" name="L24" href="#L24">24</a>  <strong class="jxr_keyword">import</strong> org.apache.rat.analysis.matchers.AbstractMatcherContainer;
+<a class="jxr_linenumber" name="L25" href="#L25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.rat.license.ILicense;
+<a class="jxr_linenumber" name="L26" href="#L26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.rat.license.ILicenseFamily;
+<a class="jxr_linenumber" name="L27" href="#L27">27</a>  
+<a class="jxr_linenumber" name="L28" href="#L28">28</a>  <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L29" href="#L29">29</a>  <em class="jxr_javadoccomment"> * A collection of ILicenses that acts as a single License for purposes of Analysis.</em>
+<a class="jxr_linenumber" name="L30" href="#L30">30</a>  <em class="jxr_javadoccomment"> * &lt;p&gt;</em>
+<a class="jxr_linenumber" name="L31" href="#L31">31</a>  <em class="jxr_javadoccomment"> * This class process each license in turn on each {@code matches(String)} call.  When a match is found the </em>
+<a class="jxr_linenumber" name="L32" href="#L32">32</a>  <em class="jxr_javadoccomment"> * ILicenseFamily for the matching license is captured and used as the family for this license. If no matching </em>
+<a class="jxr_linenumber" name="L33" href="#L33">33</a>  <em class="jxr_javadoccomment"> * license has been found the default {@code dummy} license category is used.</em>
+<a class="jxr_linenumber" name="L34" href="#L34">34</a>  <em class="jxr_javadoccomment"> */</em>
+<a class="jxr_linenumber" name="L35" href="#L35">35</a>  <strong class="jxr_keyword">class</strong> <a name="LicenseCollection" href="../../../../org/apache/rat/analysis/LicenseCollection.html#LicenseCollection">LicenseCollection</a> <strong class="jxr_keyword">extends</strong> <a name="AbstractMatcherContainer" href="../../../../org/apache/rat/analysis/matchers/AbstractMatcherContainer.html#AbstractMatcherContainer">AbstractMatcherContainer</a> <strong class="jxr_keyword">implements</st [...]
+<a class="jxr_linenumber" name="L36" href="#L36">36</a>  
+<a class="jxr_linenumber" name="L37" href="#L37">37</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <a name="ILicenseFamily" href="../../../../org/apache/rat/license/ILicenseFamily.html#ILicenseFamily">ILicenseFamily</a> DEFAULT = ILicenseFamily.builder().setLicenseFamilyCategory(<span class="jxr_string">"Dummy"</span>)
+<a class="jxr_linenumber" name="L38" href="#L38">38</a>              .setLicenseFamilyName(<span class="jxr_string">"HeaderMatcherCollection default license family"</span>).build();
+<a class="jxr_linenumber" name="L39" href="#L39">39</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> Collection&lt;ILicense&gt; enclosed;
+<a class="jxr_linenumber" name="L40" href="#L40">40</a>      <strong class="jxr_keyword">private</strong> <a name="ILicense" href="../../../../org/apache/rat/license/ILicense.html#ILicense">ILicense</a> matchingLicense;
+<a class="jxr_linenumber" name="L41" href="#L41">41</a>      <strong class="jxr_keyword">private</strong> State lastState;
+<a class="jxr_linenumber" name="L42" href="#L42">42</a>  
+<a class="jxr_linenumber" name="L43" href="#L43">43</a>      <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L44" href="#L44">44</a>  <em class="jxr_javadoccomment">     * Constructs the LicenseCollection from the provided ILicense collection.</em>
+<a class="jxr_linenumber" name="L45" href="#L45">45</a>  <em class="jxr_javadoccomment">     * @param enclosed The collection of ILicenses to compose this License implementation from.  May not be null.</em>
+<a class="jxr_linenumber" name="L46" href="#L46">46</a>  <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="L47" href="#L47">47</a>      <strong class="jxr_keyword">public</strong> <a name="LicenseCollection" href="../../../../org/apache/rat/analysis/LicenseCollection.html#LicenseCollection">LicenseCollection</a>(Collection&lt;ILicense&gt; enclosed) {
+<a class="jxr_linenumber" name="L48" href="#L48">48</a>          <strong class="jxr_keyword">super</strong>(enclosed);
+<a class="jxr_linenumber" name="L49" href="#L49">49</a>          <strong class="jxr_keyword">this</strong>.enclosed = Collections.unmodifiableCollection(enclosed);
+<a class="jxr_linenumber" name="L50" href="#L50">50</a>          <strong class="jxr_keyword">this</strong>.matchingLicense = <strong class="jxr_keyword">null</strong>;
+<a class="jxr_linenumber" name="L51" href="#L51">51</a>          <strong class="jxr_keyword">this</strong>.lastState = State.i;
+<a class="jxr_linenumber" name="L52" href="#L52">52</a>      }
+<a class="jxr_linenumber" name="L53" href="#L53">53</a>  
+<a class="jxr_linenumber" name="L54" href="#L54">54</a>      @Override
+<a class="jxr_linenumber" name="L55" href="#L55">55</a>      <strong class="jxr_keyword">public</strong> String getId() {
+<a class="jxr_linenumber" name="L56" href="#L56">56</a>          <strong class="jxr_keyword">return</strong> <span class="jxr_string">"Default License Collection"</span>;
+<a class="jxr_linenumber" name="L57" href="#L57">57</a>      }
+<a class="jxr_linenumber" name="L58" href="#L58">58</a>  
+<a class="jxr_linenumber" name="L59" href="#L59">59</a>      @Override
+<a class="jxr_linenumber" name="L60" href="#L60">60</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> reset() {
+<a class="jxr_linenumber" name="L61" href="#L61">61</a>          enclosed.forEach(ILicense::reset);
+<a class="jxr_linenumber" name="L62" href="#L62">62</a>          <strong class="jxr_keyword">this</strong>.lastState = State.i;
+<a class="jxr_linenumber" name="L63" href="#L63">63</a>          <strong class="jxr_keyword">this</strong>.matchingLicense = <strong class="jxr_keyword">null</strong>;
+<a class="jxr_linenumber" name="L64" href="#L64">64</a>      }
+<a class="jxr_linenumber" name="L65" href="#L65">65</a>  
+<a class="jxr_linenumber" name="L66" href="#L66">66</a>      @Override
+<a class="jxr_linenumber" name="L67" href="#L67">67</a>      <strong class="jxr_keyword">public</strong> State matches(String line) {
+<a class="jxr_linenumber" name="L68" href="#L68">68</a>          State dflt = State.f;
+<a class="jxr_linenumber" name="L69" href="#L69">69</a>          <strong class="jxr_keyword">for</strong> (<a name="ILicense" href="../../../../org/apache/rat/license/ILicense.html#ILicense">ILicense</a> license : enclosed) {
+<a class="jxr_linenumber" name="L70" href="#L70">70</a>              <strong class="jxr_keyword">switch</strong> (license.matches(line)) {
+<a class="jxr_linenumber" name="L71" href="#L71">71</a>              <strong class="jxr_keyword">case</strong> t:
+<a class="jxr_linenumber" name="L72" href="#L72">72</a>                  <strong class="jxr_keyword">this</strong>.matchingLicense = license;
+<a class="jxr_linenumber" name="L73" href="#L73">73</a>                  lastState = State.t;
+<a class="jxr_linenumber" name="L74" href="#L74">74</a>                  <strong class="jxr_keyword">return</strong> State.t;
+<a class="jxr_linenumber" name="L75" href="#L75">75</a>              <strong class="jxr_keyword">case</strong> i:
+<a class="jxr_linenumber" name="L76" href="#L76">76</a>                  dflt = State.i;
+<a class="jxr_linenumber" name="L77" href="#L77">77</a>                  <strong class="jxr_keyword">break</strong>;
+<a class="jxr_linenumber" name="L78" href="#L78">78</a>              <strong class="jxr_keyword">default</strong>:
+<a class="jxr_linenumber" name="L79" href="#L79">79</a>                  <em class="jxr_comment">// do nothing</em>
+<a class="jxr_linenumber" name="L80" href="#L80">80</a>                  <strong class="jxr_keyword">break</strong>;
+<a class="jxr_linenumber" name="L81" href="#L81">81</a>              }
+<a class="jxr_linenumber" name="L82" href="#L82">82</a>          }
+<a class="jxr_linenumber" name="L83" href="#L83">83</a>          lastState = dflt;
+<a class="jxr_linenumber" name="L84" href="#L84">84</a>          <strong class="jxr_keyword">return</strong> dflt;
+<a class="jxr_linenumber" name="L85" href="#L85">85</a>      }
+<a class="jxr_linenumber" name="L86" href="#L86">86</a>  
+<a class="jxr_linenumber" name="L87" href="#L87">87</a>      @Override
+<a class="jxr_linenumber" name="L88" href="#L88">88</a>      <strong class="jxr_keyword">public</strong> State currentState() {
+<a class="jxr_linenumber" name="L89" href="#L89">89</a>          <strong class="jxr_keyword">if</strong> (lastState == State.t) {
+<a class="jxr_linenumber" name="L90" href="#L90">90</a>              <strong class="jxr_keyword">return</strong> lastState;
+<a class="jxr_linenumber" name="L91" href="#L91">91</a>          }
+<a class="jxr_linenumber" name="L92" href="#L92">92</a>          <strong class="jxr_keyword">for</strong> (<a name="ILicense" href="../../../../org/apache/rat/license/ILicense.html#ILicense">ILicense</a> license : enclosed) {
+<a class="jxr_linenumber" name="L93" href="#L93">93</a>              <strong class="jxr_keyword">switch</strong> (license.currentState()) {
+<a class="jxr_linenumber" name="L94" href="#L94">94</a>              <strong class="jxr_keyword">case</strong> t:
+<a class="jxr_linenumber" name="L95" href="#L95">95</a>                  <strong class="jxr_keyword">this</strong>.matchingLicense = license;
+<a class="jxr_linenumber" name="L96" href="#L96">96</a>                  lastState = State.t;
+<a class="jxr_linenumber" name="L97" href="#L97">97</a>                  <strong class="jxr_keyword">return</strong> lastState;
+<a class="jxr_linenumber" name="L98" href="#L98">98</a>              <strong class="jxr_keyword">case</strong> i:
+<a class="jxr_linenumber" name="L99" href="#L99">99</a>                  lastState = State.i;
+<a class="jxr_linenumber" name="L100" href="#L100">100</a>                 <strong class="jxr_keyword">return</strong> lastState;
+<a class="jxr_linenumber" name="L101" href="#L101">101</a>             <strong class="jxr_keyword">case</strong> f:
+<a class="jxr_linenumber" name="L102" href="#L102">102</a>                 <em class="jxr_comment">// do nothing;</em>
+<a class="jxr_linenumber" name="L103" href="#L103">103</a>                 <strong class="jxr_keyword">break</strong>;
+<a class="jxr_linenumber" name="L104" href="#L104">104</a>             }
+<a class="jxr_linenumber" name="L105" href="#L105">105</a>         }
+<a class="jxr_linenumber" name="L106" href="#L106">106</a>         lastState = State.f;
+<a class="jxr_linenumber" name="L107" href="#L107">107</a>         <strong class="jxr_keyword">return</strong> lastState;
+<a class="jxr_linenumber" name="L108" href="#L108">108</a>     }
+<a class="jxr_linenumber" name="L109" href="#L109">109</a> 
+<a class="jxr_linenumber" name="L110" href="#L110">110</a>     @Override
+<a class="jxr_linenumber" name="L111" href="#L111">111</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">int</strong> compareTo(<a name="ILicense" href="../../../../org/apache/rat/license/ILicense.html#ILicense">ILicense</a> arg0) {
+<a class="jxr_linenumber" name="L112" href="#L112">112</a>         <strong class="jxr_keyword">return</strong> getLicenseFamily().compareTo(arg0.getLicenseFamily());
+<a class="jxr_linenumber" name="L113" href="#L113">113</a>     }
+<a class="jxr_linenumber" name="L114" href="#L114">114</a> 
+<a class="jxr_linenumber" name="L115" href="#L115">115</a>     @Override
+<a class="jxr_linenumber" name="L116" href="#L116">116</a>     <strong class="jxr_keyword">public</strong> <a name="ILicenseFamily" href="../../../../org/apache/rat/license/ILicenseFamily.html#ILicenseFamily">ILicenseFamily</a> getLicenseFamily() {
+<a class="jxr_linenumber" name="L117" href="#L117">117</a>         <strong class="jxr_keyword">return</strong> matchingLicense == <strong class="jxr_keyword">null</strong> ? DEFAULT : matchingLicense.getLicenseFamily();
+<a class="jxr_linenumber" name="L118" href="#L118">118</a>     }
+<a class="jxr_linenumber" name="L119" href="#L119">119</a> 
+<a class="jxr_linenumber" name="L120" href="#L120">120</a>     @Override
+<a class="jxr_linenumber" name="L121" href="#L121">121</a>     <strong class="jxr_keyword">public</strong> String getNotes() {
+<a class="jxr_linenumber" name="L122" href="#L122">122</a>         <strong class="jxr_keyword">return</strong> matchingLicense == <strong class="jxr_keyword">null</strong> ? <strong class="jxr_keyword">null</strong> : matchingLicense.getNotes();
+<a class="jxr_linenumber" name="L123" href="#L123">123</a>     }
+<a class="jxr_linenumber" name="L124" href="#L124">124</a> 
+<a class="jxr_linenumber" name="L125" href="#L125">125</a>     @Override
+<a class="jxr_linenumber" name="L126" href="#L126">126</a>     <strong class="jxr_keyword">public</strong> String derivedFrom() {
+<a class="jxr_linenumber" name="L127" href="#L127">127</a>         <strong class="jxr_keyword">return</strong> matchingLicense == <strong class="jxr_keyword">null</strong> ? <strong class="jxr_keyword">null</strong> : matchingLicense.derivedFrom();
+<a class="jxr_linenumber" name="L128" href="#L128">128</a>     }
+<a class="jxr_linenumber" name="L129" href="#L129">129</a>     
+<a class="jxr_linenumber" name="L130" href="#L130">130</a>     @Override
+<a class="jxr_linenumber" name="L131" href="#L131">131</a>     <strong class="jxr_keyword">public</strong> String getName() {
+<a class="jxr_linenumber" name="L132" href="#L132">132</a>         <strong class="jxr_keyword">return</strong> getLicenseFamily().getFamilyName();
+<a class="jxr_linenumber" name="L133" href="#L133">133</a>     }
+<a class="jxr_linenumber" name="L134" href="#L134">134</a> }
 </pre>
 <hr/>
 <div id="footer">Copyright &#169; 2006&#x2013;2024 <a href="https://www.apache.org">Apache Software Foundation</a>. All rights reserved.</div>
diff --git a/rat0161/apache-rat-core/xref/org/apache/rat/analysis/matchers/CopyrightMatcher.html b/rat0161/apache-rat-core/xref/org/apache/rat/analysis/matchers/CopyrightMatcher.html
index 979a6697..72bcddd7 100644
--- a/rat0161/apache-rat-core/xref/org/apache/rat/analysis/matchers/CopyrightMatcher.html
+++ b/rat0161/apache-rat-core/xref/org/apache/rat/analysis/matchers/CopyrightMatcher.html
@@ -114,21 +114,24 @@
 <a class="jxr_linenumber" name="L106" href="#L106">106</a> 
 <a class="jxr_linenumber" name="L107" href="#L107">107</a>     @Override
 <a class="jxr_linenumber" name="L108" href="#L108">108</a>     <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">boolean</strong> doMatch(String line) {
-<a class="jxr_linenumber" name="L109" href="#L109">109</a>         Matcher matcher = COPYRIGHT_PATTERN.matcher(line);
-<a class="jxr_linenumber" name="L110" href="#L110">110</a>         <strong class="jxr_keyword">if</strong> (matcher.find()) {
-<a class="jxr_linenumber" name="L111" href="#L111">111</a>             String buffer = line.substring(matcher.end());
-<a class="jxr_linenumber" name="L112" href="#L112">112</a>             matcher = dateOwnerPattern.matcher(buffer);
-<a class="jxr_linenumber" name="L113" href="#L113">113</a>             <strong class="jxr_keyword">if</strong> (matcher.find() &amp;&amp; matcher.start() == 0) {
-<a class="jxr_linenumber" name="L114" href="#L114">114</a>                 <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">true</strong>;
-<a class="jxr_linenumber" name="L115" href="#L115">115</a>             }
-<a class="jxr_linenumber" name="L116" href="#L116">116</a>             <strong class="jxr_keyword">if</strong> (ownerDatePattern != <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="L117" href="#L117">117</a>                 matcher = ownerDatePattern.matcher(buffer);
-<a class="jxr_linenumber" name="L118" href="#L118">118</a>                 <strong class="jxr_keyword">return</strong> matcher.find() &amp;&amp; matcher.start() == 0;
-<a class="jxr_linenumber" name="L119" href="#L119">119</a>             }
-<a class="jxr_linenumber" name="L120" href="#L120">120</a>         }
-<a class="jxr_linenumber" name="L121" href="#L121">121</a>         <strong class="jxr_keyword">return</strong> false;
-<a class="jxr_linenumber" name="L122" href="#L122">122</a>     }
-<a class="jxr_linenumber" name="L123" href="#L123">123</a> }
+<a class="jxr_linenumber" name="L109" href="#L109">109</a>         String lowerLine = line.toLowerCase();
+<a class="jxr_linenumber" name="L110" href="#L110">110</a>         <strong class="jxr_keyword">if</strong> (lowerLine.contains(<span class="jxr_string">"copyright"</span>) || lowerLine.contains(<span class="jxr_string">"(c)"</span>) || line.contains(<span class="jxr_string">"©"</span>)) {
+<a class="jxr_linenumber" name="L111" href="#L111">111</a>             Matcher matcher = COPYRIGHT_PATTERN.matcher(line);
+<a class="jxr_linenumber" name="L112" href="#L112">112</a>             <strong class="jxr_keyword">if</strong> (matcher.find()) {
+<a class="jxr_linenumber" name="L113" href="#L113">113</a>                 String buffer = line.substring(matcher.end());
+<a class="jxr_linenumber" name="L114" href="#L114">114</a>                 matcher = dateOwnerPattern.matcher(buffer);
+<a class="jxr_linenumber" name="L115" href="#L115">115</a>                 <strong class="jxr_keyword">if</strong> (matcher.find() &amp;&amp; matcher.start() == 0) {
+<a class="jxr_linenumber" name="L116" href="#L116">116</a>                     <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">true</strong>;
+<a class="jxr_linenumber" name="L117" href="#L117">117</a>                 }
+<a class="jxr_linenumber" name="L118" href="#L118">118</a>                 <strong class="jxr_keyword">if</strong> (ownerDatePattern != <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="L119" href="#L119">119</a>                     matcher = ownerDatePattern.matcher(buffer);
+<a class="jxr_linenumber" name="L120" href="#L120">120</a>                     <strong class="jxr_keyword">return</strong> matcher.find() &amp;&amp; matcher.start() == 0;
+<a class="jxr_linenumber" name="L121" href="#L121">121</a>                 }
+<a class="jxr_linenumber" name="L122" href="#L122">122</a>             }
+<a class="jxr_linenumber" name="L123" href="#L123">123</a>         }
+<a class="jxr_linenumber" name="L124" href="#L124">124</a>         <strong class="jxr_keyword">return</strong> false;
+<a class="jxr_linenumber" name="L125" href="#L125">125</a>     }
+<a class="jxr_linenumber" name="L126" href="#L126">126</a> }
 </pre>
 <hr/>
 <div id="footer">Copyright &#169; 2006&#x2013;2024 <a href="https://www.apache.org">Apache Software Foundation</a>. All rights reserved.</div>
diff --git a/rat0161/apache-rat-core/xref/org/apache/rat/analysis/matchers/SPDXMatcherFactory.html b/rat0161/apache-rat-core/xref/org/apache/rat/analysis/matchers/SPDXMatcherFactory.html
index 28c4d246..b06cacd6 100644
--- a/rat0161/apache-rat-core/xref/org/apache/rat/analysis/matchers/SPDXMatcherFactory.html
+++ b/rat0161/apache-rat-core/xref/org/apache/rat/analysis/matchers/SPDXMatcherFactory.html
@@ -104,7 +104,7 @@
 <a class="jxr_linenumber" name="L96" href="#L96">96</a>          <em class="jxr_comment">// if the line has not been seen yet see if we can extract the SPDX id from the line.</em>
 <a class="jxr_linenumber" name="L97" href="#L97">97</a>          <em class="jxr_comment">// if so then see if that name has been registered.  If so then we have a match and set </em>
 <a class="jxr_linenumber" name="L98" href="#L98">98</a>          <em class="jxr_comment">// lastMatch.</em>
-<a class="jxr_linenumber" name="L99" href="#L99">99</a>          <strong class="jxr_keyword">if</strong> (lastLine == <strong class="jxr_keyword">null</strong> || !lastLine.equals(line)) {
+<a class="jxr_linenumber" name="L99" href="#L99">99</a>          <strong class="jxr_keyword">if</strong> ((lastLine == <strong class="jxr_keyword">null</strong> || !lastLine.equals(line)) &amp;&amp; line.contains(<span class="jxr_string">"SPDX-License-Identifier"</span>)) {
 <a class="jxr_linenumber" name="L100" href="#L100">100</a>             Matcher matcher = groupSelector.matcher(line);
 <a class="jxr_linenumber" name="L101" href="#L101">101</a>             <strong class="jxr_keyword">if</strong> (matcher.find()) {
 <a class="jxr_linenumber" name="L102" href="#L102">102</a>                 lastMatch = matchers.get(matcher.group(1));
@@ -135,8 +135,15 @@
 <a class="jxr_linenumber" name="L127" href="#L127">127</a>         <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">boolean</strong> doMatch(String line) {
 <a class="jxr_linenumber" name="L128" href="#L128">128</a>             <strong class="jxr_keyword">return</strong> SPDXMatcherFactory.<strong class="jxr_keyword">this</strong>.check(line, <strong class="jxr_keyword">this</strong>);
 <a class="jxr_linenumber" name="L129" href="#L129">129</a>         }
-<a class="jxr_linenumber" name="L130" href="#L130">130</a>     }
-<a class="jxr_linenumber" name="L131" href="#L131">131</a> }
+<a class="jxr_linenumber" name="L130" href="#L130">130</a>         
+<a class="jxr_linenumber" name="L131" href="#L131">131</a>         @Override
+<a class="jxr_linenumber" name="L132" href="#L132">132</a>         <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> reset() {
+<a class="jxr_linenumber" name="L133" href="#L133">133</a>             <strong class="jxr_keyword">super</strong>.reset();
+<a class="jxr_linenumber" name="L134" href="#L134">134</a>             SPDXMatcherFactory.<strong class="jxr_keyword">this</strong>.lastMatch = <strong class="jxr_keyword">null</strong>;
+<a class="jxr_linenumber" name="L135" href="#L135">135</a>             
+<a class="jxr_linenumber" name="L136" href="#L136">136</a>         }
+<a class="jxr_linenumber" name="L137" href="#L137">137</a>     }
+<a class="jxr_linenumber" name="L138" href="#L138">138</a> }
 </pre>
 <hr/>
 <div id="footer">Copyright &#169; 2006&#x2013;2024 <a href="https://www.apache.org">Apache Software Foundation</a>. All rights reserved.</div>
diff --git a/rat0161/apache-rat-core/xref/org/apache/rat/annotation/AbstractLicenseAppender.html b/rat0161/apache-rat-core/xref/org/apache/rat/annotation/AbstractLicenseAppender.html
index fac0d31f..90b9295c 100644
--- a/rat0161/apache-rat-core/xref/org/apache/rat/annotation/AbstractLicenseAppender.html
+++ b/rat0161/apache-rat-core/xref/org/apache/rat/annotation/AbstractLicenseAppender.html
@@ -27,617 +27,625 @@
 <a class="jxr_linenumber" name="L19" href="#L19">19</a>  <strong class="jxr_keyword">package</strong> org.apache.rat.annotation;
 <a class="jxr_linenumber" name="L20" href="#L20">20</a>  
 <a class="jxr_linenumber" name="L21" href="#L21">21</a>  <strong class="jxr_keyword">import</strong> org.apache.commons.io.IOUtils;
-<a class="jxr_linenumber" name="L22" href="#L22">22</a>  
-<a class="jxr_linenumber" name="L23" href="#L23">23</a>  <strong class="jxr_keyword">import</strong> java.io.BufferedReader;
-<a class="jxr_linenumber" name="L24" href="#L24">24</a>  <strong class="jxr_keyword">import</strong> java.io.File;
-<a class="jxr_linenumber" name="L25" href="#L25">25</a>  <strong class="jxr_keyword">import</strong> java.io.FileInputStream;
-<a class="jxr_linenumber" name="L26" href="#L26">26</a>  <strong class="jxr_keyword">import</strong> java.io.FileWriter;
-<a class="jxr_linenumber" name="L27" href="#L27">27</a>  <strong class="jxr_keyword">import</strong> java.io.FilterInputStream;
-<a class="jxr_linenumber" name="L28" href="#L28">28</a>  <strong class="jxr_keyword">import</strong> java.io.IOException;
-<a class="jxr_linenumber" name="L29" href="#L29">29</a>  <strong class="jxr_keyword">import</strong> java.io.InputStream;
-<a class="jxr_linenumber" name="L30" href="#L30">30</a>  <strong class="jxr_keyword">import</strong> java.io.InputStreamReader;
-<a class="jxr_linenumber" name="L31" href="#L31">31</a>  <strong class="jxr_keyword">import</strong> java.io.Writer;
-<a class="jxr_linenumber" name="L32" href="#L32">32</a>  <strong class="jxr_keyword">import</strong> java.util.Arrays;
-<a class="jxr_linenumber" name="L33" href="#L33">33</a>  <strong class="jxr_keyword">import</strong> java.util.HashMap;
-<a class="jxr_linenumber" name="L34" href="#L34">34</a>  <strong class="jxr_keyword">import</strong> java.util.Map;
-<a class="jxr_linenumber" name="L35" href="#L35">35</a>  
-<a class="jxr_linenumber" name="L36" href="#L36">36</a>  <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L37" href="#L37">37</a>  <em class="jxr_javadoccomment"> * Add a license header to a document. This appender does not check for the</em>
-<a class="jxr_linenumber" name="L38" href="#L38">38</a>  <em class="jxr_javadoccomment"> * existence of an existing license header, it is assumed that either a second</em>
-<a class="jxr_linenumber" name="L39" href="#L39">39</a>  <em class="jxr_javadoccomment"> * license header is intentional or that there is no license header present</em>
-<a class="jxr_linenumber" name="L40" href="#L40">40</a>  <em class="jxr_javadoccomment"> * already.</em>
-<a class="jxr_linenumber" name="L41" href="#L41">41</a>  <em class="jxr_javadoccomment"> */</em>
-<a class="jxr_linenumber" name="L42" href="#L42">42</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">abstract</strong> <strong class="jxr_keyword">class</strong> <a name="AbstractLicenseAppender" href="../../../../org/apache/rat/annotation/AbstractLicenseAppender.html#AbstractLicenseAppender">AbstractLicenseAppender</a> {
-<a class="jxr_linenumber" name="L43" href="#L43">43</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String DOT = <span class="jxr_string">"."</span>;
-<a class="jxr_linenumber" name="L44" href="#L44">44</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> TYPE_UNKNOWN = 0;
-<a class="jxr_linenumber" name="L45" href="#L45">45</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> TYPE_JAVA = 1;
-<a class="jxr_linenumber" name="L46" href="#L46">46</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> TYPE_XML = 2;
-<a class="jxr_linenumber" name="L47" href="#L47">47</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> TYPE_HTML = 3;
-<a class="jxr_linenumber" name="L48" href="#L48">48</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> TYPE_CSS = 4;
-<a class="jxr_linenumber" name="L49" href="#L49">49</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> TYPE_JAVASCRIPT = 5;
-<a class="jxr_linenumber" name="L50" href="#L50">50</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> TYPE_APT = 6;
-<a class="jxr_linenumber" name="L51" href="#L51">51</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> TYPE_PROPERTIES = 7;
-<a class="jxr_linenumber" name="L52" href="#L52">52</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> TYPE_PYTHON = 8;
-<a class="jxr_linenumber" name="L53" href="#L53">53</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> TYPE_C = 9;
-<a class="jxr_linenumber" name="L54" href="#L54">54</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> TYPE_H = 10;
-<a class="jxr_linenumber" name="L55" href="#L55">55</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> TYPE_SH = 11;
-<a class="jxr_linenumber" name="L56" href="#L56">56</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> TYPE_BAT = 12;
-<a class="jxr_linenumber" name="L57" href="#L57">57</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> TYPE_VM = 13;
-<a class="jxr_linenumber" name="L58" href="#L58">58</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> TYPE_SCALA = 14;
-<a class="jxr_linenumber" name="L59" href="#L59">59</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> TYPE_RUBY = 15;
-<a class="jxr_linenumber" name="L60" href="#L60">60</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> TYPE_PERL = 16;
-<a class="jxr_linenumber" name="L61" href="#L61">61</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> TYPE_TCL = 17;
-<a class="jxr_linenumber" name="L62" href="#L62">62</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> TYPE_CPP = 18;
-<a class="jxr_linenumber" name="L63" href="#L63">63</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> TYPE_CSHARP = 19;
-<a class="jxr_linenumber" name="L64" href="#L64">64</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> TYPE_PHP = 20;
-<a class="jxr_linenumber" name="L65" href="#L65">65</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> TYPE_GROOVY = 21;
-<a class="jxr_linenumber" name="L66" href="#L66">66</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> TYPE_VISUAL_STUDIO_SOLUTION = 22;
-<a class="jxr_linenumber" name="L67" href="#L67">67</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> TYPE_BEANSHELL = 23;
-<a class="jxr_linenumber" name="L68" href="#L68">68</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> TYPE_JSP = 24;
-<a class="jxr_linenumber" name="L69" href="#L69">69</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> TYPE_FML = 25;
-<a class="jxr_linenumber" name="L70" href="#L70">70</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> TYPE_GO = 26;
-<a class="jxr_linenumber" name="L71" href="#L71">71</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> TYPE_PM = 27;
-<a class="jxr_linenumber" name="L72" href="#L72">72</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> TYPE_MD = 28;
-<a class="jxr_linenumber" name="L73" href="#L73">73</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> TYPE_YAML = 29;
-<a class="jxr_linenumber" name="L74" href="#L74">74</a>      
+<a class="jxr_linenumber" name="L22" href="#L22">22</a>  <strong class="jxr_keyword">import</strong> org.apache.rat.utils.Log;
+<a class="jxr_linenumber" name="L23" href="#L23">23</a>  
+<a class="jxr_linenumber" name="L24" href="#L24">24</a>  <strong class="jxr_keyword">import</strong> java.io.BufferedReader;
+<a class="jxr_linenumber" name="L25" href="#L25">25</a>  <strong class="jxr_keyword">import</strong> java.io.File;
+<a class="jxr_linenumber" name="L26" href="#L26">26</a>  <strong class="jxr_keyword">import</strong> java.io.FileInputStream;
+<a class="jxr_linenumber" name="L27" href="#L27">27</a>  <strong class="jxr_keyword">import</strong> java.io.FileWriter;
+<a class="jxr_linenumber" name="L28" href="#L28">28</a>  <strong class="jxr_keyword">import</strong> java.io.FilterInputStream;
+<a class="jxr_linenumber" name="L29" href="#L29">29</a>  <strong class="jxr_keyword">import</strong> java.io.IOException;
+<a class="jxr_linenumber" name="L30" href="#L30">30</a>  <strong class="jxr_keyword">import</strong> java.io.InputStream;
+<a class="jxr_linenumber" name="L31" href="#L31">31</a>  <strong class="jxr_keyword">import</strong> java.io.InputStreamReader;
+<a class="jxr_linenumber" name="L32" href="#L32">32</a>  <strong class="jxr_keyword">import</strong> java.io.Writer;
+<a class="jxr_linenumber" name="L33" href="#L33">33</a>  <strong class="jxr_keyword">import</strong> java.util.Arrays;
+<a class="jxr_linenumber" name="L34" href="#L34">34</a>  <strong class="jxr_keyword">import</strong> java.util.HashMap;
+<a class="jxr_linenumber" name="L35" href="#L35">35</a>  <strong class="jxr_keyword">import</strong> java.util.Map;
+<a class="jxr_linenumber" name="L36" href="#L36">36</a>  
+<a class="jxr_linenumber" name="L37" href="#L37">37</a>  <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L38" href="#L38">38</a>  <em class="jxr_javadoccomment"> * Add a license header to a document. This appender does not check for the</em>
+<a class="jxr_linenumber" name="L39" href="#L39">39</a>  <em class="jxr_javadoccomment"> * existence of an existing license header, it is assumed that either a second</em>
+<a class="jxr_linenumber" name="L40" href="#L40">40</a>  <em class="jxr_javadoccomment"> * license header is intentional or that there is no license header present</em>
+<a class="jxr_linenumber" name="L41" href="#L41">41</a>  <em class="jxr_javadoccomment"> * already.</em>
+<a class="jxr_linenumber" name="L42" href="#L42">42</a>  <em class="jxr_javadoccomment"> */</em>
+<a class="jxr_linenumber" name="L43" href="#L43">43</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">abstract</strong> <strong class="jxr_keyword">class</strong> <a name="AbstractLicenseAppender" href="../../../../org/apache/rat/annotation/AbstractLicenseAppender.html#AbstractLicenseAppender">AbstractLicenseAppender</a> {
+<a class="jxr_linenumber" name="L44" href="#L44">44</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String DOT = <span class="jxr_string">"."</span>;
+<a class="jxr_linenumber" name="L45" href="#L45">45</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> TYPE_UNKNOWN = 0;
+<a class="jxr_linenumber" name="L46" href="#L46">46</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> TYPE_JAVA = 1;
+<a class="jxr_linenumber" name="L47" href="#L47">47</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> TYPE_XML = 2;
+<a class="jxr_linenumber" name="L48" href="#L48">48</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> TYPE_HTML = 3;
+<a class="jxr_linenumber" name="L49" href="#L49">49</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> TYPE_CSS = 4;
+<a class="jxr_linenumber" name="L50" href="#L50">50</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> TYPE_JAVASCRIPT = 5;
+<a class="jxr_linenumber" name="L51" href="#L51">51</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> TYPE_APT = 6;
+<a class="jxr_linenumber" name="L52" href="#L52">52</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> TYPE_PROPERTIES = 7;
+<a class="jxr_linenumber" name="L53" href="#L53">53</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> TYPE_PYTHON = 8;
+<a class="jxr_linenumber" name="L54" href="#L54">54</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> TYPE_C = 9;
+<a class="jxr_linenumber" name="L55" href="#L55">55</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> TYPE_H = 10;
+<a class="jxr_linenumber" name="L56" href="#L56">56</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> TYPE_SH = 11;
+<a class="jxr_linenumber" name="L57" href="#L57">57</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> TYPE_BAT = 12;
+<a class="jxr_linenumber" name="L58" href="#L58">58</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> TYPE_VM = 13;
+<a class="jxr_linenumber" name="L59" href="#L59">59</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> TYPE_SCALA = 14;
+<a class="jxr_linenumber" name="L60" href="#L60">60</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> TYPE_RUBY = 15;
+<a class="jxr_linenumber" name="L61" href="#L61">61</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> TYPE_PERL = 16;
+<a class="jxr_linenumber" name="L62" href="#L62">62</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> TYPE_TCL = 17;
+<a class="jxr_linenumber" name="L63" href="#L63">63</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> TYPE_CPP = 18;
+<a class="jxr_linenumber" name="L64" href="#L64">64</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> TYPE_CSHARP = 19;
+<a class="jxr_linenumber" name="L65" href="#L65">65</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> TYPE_PHP = 20;
+<a class="jxr_linenumber" name="L66" href="#L66">66</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> TYPE_GROOVY = 21;
+<a class="jxr_linenumber" name="L67" href="#L67">67</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> TYPE_VISUAL_STUDIO_SOLUTION = 22;
+<a class="jxr_linenumber" name="L68" href="#L68">68</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> TYPE_BEANSHELL = 23;
+<a class="jxr_linenumber" name="L69" href="#L69">69</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> TYPE_JSP = 24;
+<a class="jxr_linenumber" name="L70" href="#L70">70</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> TYPE_FML = 25;
+<a class="jxr_linenumber" name="L71" href="#L71">71</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> TYPE_GO = 26;
+<a class="jxr_linenumber" name="L72" href="#L72">72</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> TYPE_PM = 27;
+<a class="jxr_linenumber" name="L73" href="#L73">73</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> TYPE_MD = 28;
+<a class="jxr_linenumber" name="L74" href="#L74">74</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> TYPE_YAML = 29;
 <a class="jxr_linenumber" name="L75" href="#L75">75</a>      
-<a class="jxr_linenumber" name="L76" href="#L76">76</a>  
-<a class="jxr_linenumber" name="L77" href="#L77">77</a>      <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L78" href="#L78">78</a>  <em class="jxr_javadoccomment">     * the line separator for this OS</em>
-<a class="jxr_linenumber" name="L79" href="#L79">79</a>  <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="L80" href="#L80">80</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String LINE_SEP = System.lineSeparator();
-<a class="jxr_linenumber" name="L81" href="#L81">81</a>  
-<a class="jxr_linenumber" name="L82" href="#L82">82</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong>[] FAMILY_C = <strong class="jxr_keyword">new</strong> <strong class="jxr_keyword">int</strong>[]{
-<a class="jxr_linenumber" name="L83" href="#L83">83</a>              TYPE_JAVA, TYPE_JAVASCRIPT, TYPE_C, TYPE_H, TYPE_SCALA,
-<a class="jxr_linenumber" name="L84" href="#L84">84</a>              TYPE_CSS, TYPE_CPP, TYPE_CSHARP, TYPE_PHP, TYPE_GROOVY,
-<a class="jxr_linenumber" name="L85" href="#L85">85</a>              TYPE_BEANSHELL, TYPE_GO,
-<a class="jxr_linenumber" name="L86" href="#L86">86</a>      };
-<a class="jxr_linenumber" name="L87" href="#L87">87</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong>[] FAMILY_SGML = <strong class="jxr_keyword">new</strong> <strong class="jxr_keyword">int</strong>[]{
-<a class="jxr_linenumber" name="L88" href="#L88">88</a>              TYPE_XML, TYPE_HTML, TYPE_JSP, TYPE_FML, TYPE_MD,
-<a class="jxr_linenumber" name="L89" href="#L89">89</a>      };
-<a class="jxr_linenumber" name="L90" href="#L90">90</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong>[] FAMILY_SH = <strong class="jxr_keyword">new</strong> <strong class="jxr_keyword">int</strong>[]{
-<a class="jxr_linenumber" name="L91" href="#L91">91</a>              TYPE_PROPERTIES, TYPE_PYTHON, TYPE_SH, TYPE_RUBY, TYPE_PERL,
-<a class="jxr_linenumber" name="L92" href="#L92">92</a>              TYPE_TCL, TYPE_VISUAL_STUDIO_SOLUTION, TYPE_PM, TYPE_YAML,
-<a class="jxr_linenumber" name="L93" href="#L93">93</a>      };
-<a class="jxr_linenumber" name="L94" href="#L94">94</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong>[] FAMILY_BAT = <strong class="jxr_keyword">new</strong> <strong class="jxr_keyword">int</strong>[]{
-<a class="jxr_linenumber" name="L95" href="#L95">95</a>              TYPE_BAT,
-<a class="jxr_linenumber" name="L96" href="#L96">96</a>      };
-<a class="jxr_linenumber" name="L97" href="#L97">97</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong>[] FAMILY_APT = <strong class="jxr_keyword">new</strong> <strong class="jxr_keyword">int</strong>[]{
-<a class="jxr_linenumber" name="L98" href="#L98">98</a>              TYPE_APT,
-<a class="jxr_linenumber" name="L99" href="#L99">99</a>      };
-<a class="jxr_linenumber" name="L100" href="#L100">100</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong>[] FAMILY_VELOCITY = <strong class="jxr_keyword">new</strong> <strong class="jxr_keyword">int</strong>[]{
-<a class="jxr_linenumber" name="L101" href="#L101">101</a>             TYPE_VM,
-<a class="jxr_linenumber" name="L102" href="#L102">102</a>     };
-<a class="jxr_linenumber" name="L103" href="#L103">103</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong>[] EXPECTS_HASH_PLING = <strong class="jxr_keyword">new</strong> <strong class="jxr_keyword">int</strong>[]{
-<a class="jxr_linenumber" name="L104" href="#L104">104</a>             TYPE_PYTHON, TYPE_SH, TYPE_RUBY, TYPE_PERL, TYPE_TCL,
-<a class="jxr_linenumber" name="L105" href="#L105">105</a>     };
-<a class="jxr_linenumber" name="L106" href="#L106">106</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong>[] EXPECTS_AT_ECHO = <strong class="jxr_keyword">new</strong> <strong class="jxr_keyword">int</strong>[]{
-<a class="jxr_linenumber" name="L107" href="#L107">107</a>             TYPE_BAT,
-<a class="jxr_linenumber" name="L108" href="#L108">108</a>     };
-<a class="jxr_linenumber" name="L109" href="#L109">109</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong>[] EXPECTS_PACKAGE = <strong class="jxr_keyword">new</strong> <strong class="jxr_keyword">int</strong>[]{
-<a class="jxr_linenumber" name="L110" href="#L110">110</a>             TYPE_JAVA, TYPE_GO, TYPE_PM,
-<a class="jxr_linenumber" name="L111" href="#L111">111</a>     };
-<a class="jxr_linenumber" name="L112" href="#L112">112</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong>[] EXPECTS_XML_DECL = <strong class="jxr_keyword">new</strong> <strong class="jxr_keyword">int</strong>[]{
-<a class="jxr_linenumber" name="L113" href="#L113">113</a>             TYPE_XML,
-<a class="jxr_linenumber" name="L114" href="#L114">114</a>     };
-<a class="jxr_linenumber" name="L115" href="#L115">115</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong>[] EXPECTS_PHP_PI = <strong class="jxr_keyword">new</strong> <strong class="jxr_keyword">int</strong>[]{
-<a class="jxr_linenumber" name="L116" href="#L116">116</a>             TYPE_PHP,
-<a class="jxr_linenumber" name="L117" href="#L117">117</a>     };
-<a class="jxr_linenumber" name="L118" href="#L118">118</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong>[] EXPECTS_MSVSSF_HEADER = <strong class="jxr_keyword">new</strong> <strong class="jxr_keyword">int</strong>[]{
-<a class="jxr_linenumber" name="L119" href="#L119">119</a>             TYPE_VISUAL_STUDIO_SOLUTION,
-<a class="jxr_linenumber" name="L120" href="#L120">120</a>     };
-<a class="jxr_linenumber" name="L121" href="#L121">121</a> 
-<a class="jxr_linenumber" name="L122" href="#L122">122</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Map&lt;String, Integer&gt; EXT2TYPE = <strong class="jxr_keyword">new</strong> HashMap&lt;&gt;();
-<a class="jxr_linenumber" name="L123" href="#L123">123</a> 
-<a class="jxr_linenumber" name="L124" href="#L124">124</a>     <strong class="jxr_keyword">static</strong> {
-<a class="jxr_linenumber" name="L125" href="#L125">125</a>         <em class="jxr_comment">// these arrays are used in Arrays.binarySearch so they must</em>
-<a class="jxr_linenumber" name="L126" href="#L126">126</a>         <em class="jxr_comment">// be sorted</em>
-<a class="jxr_linenumber" name="L127" href="#L127">127</a>         Arrays.sort(FAMILY_C);
-<a class="jxr_linenumber" name="L128" href="#L128">128</a>         Arrays.sort(FAMILY_SGML);
-<a class="jxr_linenumber" name="L129" href="#L129">129</a>         Arrays.sort(FAMILY_SH);
-<a class="jxr_linenumber" name="L130" href="#L130">130</a>         Arrays.sort(FAMILY_BAT);
-<a class="jxr_linenumber" name="L131" href="#L131">131</a>         Arrays.sort(FAMILY_APT);
-<a class="jxr_linenumber" name="L132" href="#L132">132</a>         Arrays.sort(FAMILY_VELOCITY);
-<a class="jxr_linenumber" name="L133" href="#L133">133</a> 
-<a class="jxr_linenumber" name="L134" href="#L134">134</a>         Arrays.sort(EXPECTS_HASH_PLING);
-<a class="jxr_linenumber" name="L135" href="#L135">135</a>         Arrays.sort(EXPECTS_AT_ECHO);
-<a class="jxr_linenumber" name="L136" href="#L136">136</a>         Arrays.sort(EXPECTS_PACKAGE);
-<a class="jxr_linenumber" name="L137" href="#L137">137</a>         Arrays.sort(EXPECTS_XML_DECL);
-<a class="jxr_linenumber" name="L138" href="#L138">138</a>         Arrays.sort(EXPECTS_MSVSSF_HEADER);
-<a class="jxr_linenumber" name="L139" href="#L139">139</a> 
-<a class="jxr_linenumber" name="L140" href="#L140">140</a>         EXT2TYPE.put(<span class="jxr_string">"apt"</span>, TYPE_APT);
-<a class="jxr_linenumber" name="L141" href="#L141">141</a>         EXT2TYPE.put(<span class="jxr_string">"asax"</span>, TYPE_HTML);
-<a class="jxr_linenumber" name="L142" href="#L142">142</a>         EXT2TYPE.put(<span class="jxr_string">"ascx"</span>, TYPE_HTML);
-<a class="jxr_linenumber" name="L143" href="#L143">143</a>         EXT2TYPE.put(<span class="jxr_string">"aspx"</span>, TYPE_HTML);
-<a class="jxr_linenumber" name="L144" href="#L144">144</a>         EXT2TYPE.put(<span class="jxr_string">"bat"</span>, TYPE_BAT);
-<a class="jxr_linenumber" name="L145" href="#L145">145</a>         EXT2TYPE.put(<span class="jxr_string">"bsh"</span>, TYPE_BEANSHELL);
-<a class="jxr_linenumber" name="L146" href="#L146">146</a>         EXT2TYPE.put(<span class="jxr_string">"c"</span>, TYPE_C);
-<a class="jxr_linenumber" name="L147" href="#L147">147</a>         EXT2TYPE.put(<span class="jxr_string">"cc"</span>, TYPE_CPP);
-<a class="jxr_linenumber" name="L148" href="#L148">148</a>         EXT2TYPE.put(<span class="jxr_string">"cmd"</span>, TYPE_BAT);
-<a class="jxr_linenumber" name="L149" href="#L149">149</a>         EXT2TYPE.put(<span class="jxr_string">"config"</span>, TYPE_XML);
-<a class="jxr_linenumber" name="L150" href="#L150">150</a>         EXT2TYPE.put(<span class="jxr_string">"cpp"</span>, TYPE_CPP);
-<a class="jxr_linenumber" name="L151" href="#L151">151</a>         EXT2TYPE.put(<span class="jxr_string">"cs"</span>, TYPE_CSHARP);
-<a class="jxr_linenumber" name="L152" href="#L152">152</a>         EXT2TYPE.put(<span class="jxr_string">"csdproj"</span>, TYPE_XML);
-<a class="jxr_linenumber" name="L153" href="#L153">153</a>         EXT2TYPE.put(<span class="jxr_string">"csproj"</span>, TYPE_XML);
-<a class="jxr_linenumber" name="L154" href="#L154">154</a>         EXT2TYPE.put(<span class="jxr_string">"css"</span>, TYPE_CSS);
-<a class="jxr_linenumber" name="L155" href="#L155">155</a>         EXT2TYPE.put(<span class="jxr_string">"fxcop"</span>, TYPE_XML);
-<a class="jxr_linenumber" name="L156" href="#L156">156</a>         EXT2TYPE.put(<span class="jxr_string">"fml"</span>, TYPE_FML);
-<a class="jxr_linenumber" name="L157" href="#L157">157</a>         EXT2TYPE.put(<span class="jxr_string">"groovy"</span>, TYPE_GROOVY);
-<a class="jxr_linenumber" name="L158" href="#L158">158</a>         EXT2TYPE.put(<span class="jxr_string">"go"</span>, TYPE_GO);
-<a class="jxr_linenumber" name="L159" href="#L159">159</a>         EXT2TYPE.put(<span class="jxr_string">"h"</span>, TYPE_H);
-<a class="jxr_linenumber" name="L160" href="#L160">160</a>         EXT2TYPE.put(<span class="jxr_string">"hh"</span>, TYPE_H);
-<a class="jxr_linenumber" name="L161" href="#L161">161</a>         EXT2TYPE.put(<span class="jxr_string">"hpp"</span>, TYPE_H);
-<a class="jxr_linenumber" name="L162" href="#L162">162</a>         EXT2TYPE.put(<span class="jxr_string">"htm"</span>, TYPE_HTML);
-<a class="jxr_linenumber" name="L163" href="#L163">163</a>         EXT2TYPE.put(<span class="jxr_string">"html"</span>, TYPE_HTML);
-<a class="jxr_linenumber" name="L164" href="#L164">164</a>         EXT2TYPE.put(<span class="jxr_string">"java"</span>, TYPE_JAVA);
-<a class="jxr_linenumber" name="L165" href="#L165">165</a>         EXT2TYPE.put(<span class="jxr_string">"js"</span>, TYPE_JAVASCRIPT);
-<a class="jxr_linenumber" name="L166" href="#L166">166</a>         EXT2TYPE.put(<span class="jxr_string">"jsp"</span>, TYPE_JSP);
-<a class="jxr_linenumber" name="L167" href="#L167">167</a>         EXT2TYPE.put(<span class="jxr_string">"md"</span>, TYPE_MD);
-<a class="jxr_linenumber" name="L168" href="#L168">168</a>         EXT2TYPE.put(<span class="jxr_string">"ndoc"</span>, TYPE_XML);
-<a class="jxr_linenumber" name="L169" href="#L169">169</a>         EXT2TYPE.put(<span class="jxr_string">"nunit"</span>, TYPE_XML);
-<a class="jxr_linenumber" name="L170" href="#L170">170</a>         EXT2TYPE.put(<span class="jxr_string">"php"</span>, TYPE_PHP);
-<a class="jxr_linenumber" name="L171" href="#L171">171</a>         EXT2TYPE.put(<span class="jxr_string">"pl"</span>, TYPE_PERL);
-<a class="jxr_linenumber" name="L172" href="#L172">172</a>         EXT2TYPE.put(<span class="jxr_string">"pm"</span>, TYPE_PM);
-<a class="jxr_linenumber" name="L173" href="#L173">173</a>         EXT2TYPE.put(<span class="jxr_string">"properties"</span>, TYPE_PROPERTIES);
-<a class="jxr_linenumber" name="L174" href="#L174">174</a>         EXT2TYPE.put(<span class="jxr_string">"py"</span>, TYPE_PYTHON);
-<a class="jxr_linenumber" name="L175" href="#L175">175</a>         EXT2TYPE.put(<span class="jxr_string">"rb"</span>, TYPE_RUBY);
-<a class="jxr_linenumber" name="L176" href="#L176">176</a>         EXT2TYPE.put(<span class="jxr_string">"rdf"</span>, TYPE_XML);
-<a class="jxr_linenumber" name="L177" href="#L177">177</a>         EXT2TYPE.put(<span class="jxr_string">"resx"</span>, TYPE_XML);
-<a class="jxr_linenumber" name="L178" href="#L178">178</a>         EXT2TYPE.put(<span class="jxr_string">"scala"</span>, TYPE_SCALA);
-<a class="jxr_linenumber" name="L179" href="#L179">179</a>         EXT2TYPE.put(<span class="jxr_string">"sh"</span>, TYPE_SH);
-<a class="jxr_linenumber" name="L180" href="#L180">180</a>         EXT2TYPE.put(<span class="jxr_string">"shfbproj"</span>, TYPE_XML);
-<a class="jxr_linenumber" name="L181" href="#L181">181</a>         EXT2TYPE.put(<span class="jxr_string">"sln"</span>, TYPE_VISUAL_STUDIO_SOLUTION);
-<a class="jxr_linenumber" name="L182" href="#L182">182</a>         EXT2TYPE.put(<span class="jxr_string">"stylecop"</span>, TYPE_XML);
-<a class="jxr_linenumber" name="L183" href="#L183">183</a>         EXT2TYPE.put(<span class="jxr_string">"svg"</span>, TYPE_XML);
-<a class="jxr_linenumber" name="L184" href="#L184">184</a>         EXT2TYPE.put(<span class="jxr_string">"tcl"</span>, TYPE_TCL);
-<a class="jxr_linenumber" name="L185" href="#L185">185</a>         EXT2TYPE.put(<span class="jxr_string">"vbdproj"</span>, TYPE_XML);
-<a class="jxr_linenumber" name="L186" href="#L186">186</a>         EXT2TYPE.put(<span class="jxr_string">"vbproj"</span>, TYPE_XML);
-<a class="jxr_linenumber" name="L187" href="#L187">187</a>         EXT2TYPE.put(<span class="jxr_string">"vcproj"</span>, TYPE_XML);
-<a class="jxr_linenumber" name="L188" href="#L188">188</a>         EXT2TYPE.put(<span class="jxr_string">"vm"</span>, TYPE_VM);
-<a class="jxr_linenumber" name="L189" href="#L189">189</a>         EXT2TYPE.put(<span class="jxr_string">"vsdisco"</span>, TYPE_XML);
-<a class="jxr_linenumber" name="L190" href="#L190">190</a>         EXT2TYPE.put(<span class="jxr_string">"webinfo"</span>, TYPE_XML);
-<a class="jxr_linenumber" name="L191" href="#L191">191</a>         EXT2TYPE.put(<span class="jxr_string">"xml"</span>, TYPE_XML);
-<a class="jxr_linenumber" name="L192" href="#L192">192</a>         EXT2TYPE.put(<span class="jxr_string">"xproj"</span>, TYPE_XML);
-<a class="jxr_linenumber" name="L193" href="#L193">193</a>         EXT2TYPE.put(<span class="jxr_string">"xsl"</span>, TYPE_XML);
-<a class="jxr_linenumber" name="L194" href="#L194">194</a>         EXT2TYPE.put(<span class="jxr_string">"yaml"</span>, TYPE_YAML);
-<a class="jxr_linenumber" name="L195" href="#L195">195</a>         EXT2TYPE.put(<span class="jxr_string">"yml"</span>, TYPE_YAML);
-<a class="jxr_linenumber" name="L196" href="#L196">196</a>     }
-<a class="jxr_linenumber" name="L197" href="#L197">197</a> 
-<a class="jxr_linenumber" name="L198" href="#L198">198</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> isForced;
-<a class="jxr_linenumber" name="L199" href="#L199">199</a> 
-<a class="jxr_linenumber" name="L200" href="#L200">200</a>     <strong class="jxr_keyword">public</strong> <a name="AbstractLicenseAppender" href="../../../../org/apache/rat/annotation/AbstractLicenseAppender.html#AbstractLicenseAppender">AbstractLicenseAppender</a>() {
-<a class="jxr_linenumber" name="L201" href="#L201">201</a>         <strong class="jxr_keyword">super</strong>();
-<a class="jxr_linenumber" name="L202" href="#L202">202</a>     }
-<a class="jxr_linenumber" name="L203" href="#L203">203</a> 
-<a class="jxr_linenumber" name="L204" href="#L204">204</a>     <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L205" href="#L205">205</a> <em class="jxr_javadoccomment">     * Append the default license header to the supplied document.</em>
-<a class="jxr_linenumber" name="L206" href="#L206">206</a> <em class="jxr_javadoccomment">     *</em>
-<a class="jxr_linenumber" name="L207" href="#L207">207</a> <em class="jxr_javadoccomment">     * @param document document to append to.</em>
-<a class="jxr_linenumber" name="L208" href="#L208">208</a> <em class="jxr_javadoccomment">     * @throws IOException if there is a problem while reading or writing the file</em>
-<a class="jxr_linenumber" name="L209" href="#L209">209</a> <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="L210" href="#L210">210</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> append(File document) <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="L211" href="#L211">211</a>         <strong class="jxr_keyword">int</strong> type = getType(document);
-<a class="jxr_linenumber" name="L212" href="#L212">212</a>         <strong class="jxr_keyword">if</strong> (type == TYPE_UNKNOWN) {
-<a class="jxr_linenumber" name="L213" href="#L213">213</a>             <strong class="jxr_keyword">return</strong>;
-<a class="jxr_linenumber" name="L214" href="#L214">214</a>         }
-<a class="jxr_linenumber" name="L215" href="#L215">215</a> 
-<a class="jxr_linenumber" name="L216" href="#L216">216</a>         <strong class="jxr_keyword">boolean</strong> expectsHashPling = expectsHashPling(type);
-<a class="jxr_linenumber" name="L217" href="#L217">217</a>         <strong class="jxr_keyword">boolean</strong> expectsAtEcho = expectsAtEcho(type);
-<a class="jxr_linenumber" name="L218" href="#L218">218</a>         <strong class="jxr_keyword">boolean</strong> expectsPackage = expectsPackage(type);
-<a class="jxr_linenumber" name="L219" href="#L219">219</a>         <strong class="jxr_keyword">boolean</strong> expectsXMLDecl = expectsXMLDecl(type);
-<a class="jxr_linenumber" name="L220" href="#L220">220</a>         <strong class="jxr_keyword">boolean</strong> expectsPhpPI = expectsPhpPI(type);
-<a class="jxr_linenumber" name="L221" href="#L221">221</a>         <strong class="jxr_keyword">boolean</strong> expectsMSVSSF = expectsMSVisualStudioSolutionFileHeader(type);
-<a class="jxr_linenumber" name="L222" href="#L222">222</a> 
-<a class="jxr_linenumber" name="L223" href="#L223">223</a>         File newDocument = <strong class="jxr_keyword">new</strong> File(document.getAbsolutePath() + <span class="jxr_string">".new"</span>);
-<a class="jxr_linenumber" name="L224" href="#L224">224</a>         FileWriter writer = <strong class="jxr_keyword">new</strong> FileWriter(newDocument);
-<a class="jxr_linenumber" name="L225" href="#L225">225</a>         <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="L226" href="#L226">226</a>             <strong class="jxr_keyword">if</strong> (!attachLicense(writer, document,
-<a class="jxr_linenumber" name="L227" href="#L227">227</a>                     expectsHashPling, expectsAtEcho, expectsPackage,
-<a class="jxr_linenumber" name="L228" href="#L228">228</a>                     expectsXMLDecl, expectsPhpPI, expectsMSVSSF)) {
-<a class="jxr_linenumber" name="L229" href="#L229">229</a>                 <em class="jxr_comment">// Java File without package, XML file without decl or PHP</em>
-<a class="jxr_linenumber" name="L230" href="#L230">230</a>                 <em class="jxr_comment">// file without PI</em>
-<a class="jxr_linenumber" name="L231" href="#L231">231</a>                 <em class="jxr_comment">// for Java just place the license at the front, for XML add</em>
-<a class="jxr_linenumber" name="L232" href="#L232">232</a>                 <em class="jxr_comment">// an XML decl first - don't know how to handle PHP</em>
-<a class="jxr_linenumber" name="L233" href="#L233">233</a>                 <strong class="jxr_keyword">if</strong> (expectsPackage || expectsXMLDecl) {
-<a class="jxr_linenumber" name="L234" href="#L234">234</a>                     writer = <strong class="jxr_keyword">new</strong> FileWriter(newDocument);
-<a class="jxr_linenumber" name="L235" href="#L235">235</a>                     <strong class="jxr_keyword">if</strong> (expectsXMLDecl) {
-<a class="jxr_linenumber" name="L236" href="#L236">236</a>                         writer.write(<span class="jxr_string">"&lt;?xml version='1.0'?&gt;"</span>);
-<a class="jxr_linenumber" name="L237" href="#L237">237</a>                         writer.write(LINE_SEP);
-<a class="jxr_linenumber" name="L238" href="#L238">238</a>                     }
-<a class="jxr_linenumber" name="L239" href="#L239">239</a>                     attachLicense(writer, document,
-<a class="jxr_linenumber" name="L240" href="#L240">240</a>                             false, false, false, false, false, false);
-<a class="jxr_linenumber" name="L241" href="#L241">241</a>                 }
-<a class="jxr_linenumber" name="L242" href="#L242">242</a>             }
-<a class="jxr_linenumber" name="L243" href="#L243">243</a>         } <strong class="jxr_keyword">finally</strong> {
-<a class="jxr_linenumber" name="L244" href="#L244">244</a>             IOUtils.closeQuietly(writer);
-<a class="jxr_linenumber" name="L245" href="#L245">245</a>         }
-<a class="jxr_linenumber" name="L246" href="#L246">246</a> 
-<a class="jxr_linenumber" name="L247" href="#L247">247</a>         <strong class="jxr_keyword">if</strong> (isForced) {
-<a class="jxr_linenumber" name="L248" href="#L248">248</a>             <strong class="jxr_keyword">boolean</strong> deleted = document.delete();
-<a class="jxr_linenumber" name="L249" href="#L249">249</a>             <strong class="jxr_keyword">if</strong> (!deleted) {
-<a class="jxr_linenumber" name="L250" href="#L250">250</a>                 System.err.println(<span class="jxr_string">"Could not delete original file to prepare renaming."</span>);
-<a class="jxr_linenumber" name="L251" href="#L251">251</a>             }
-<a class="jxr_linenumber" name="L252" href="#L252">252</a>             <strong class="jxr_keyword">boolean</strong> renamed = newDocument.renameTo(document.getAbsoluteFile());
-<a class="jxr_linenumber" name="L253" href="#L253">253</a>             <strong class="jxr_keyword">if</strong> (!renamed) {
-<a class="jxr_linenumber" name="L254" href="#L254">254</a>                 System.err.println(<span class="jxr_string">"Failed to rename new file, original file remains unchanged."</span>);
-<a class="jxr_linenumber" name="L255" href="#L255">255</a>             }
-<a class="jxr_linenumber" name="L256" href="#L256">256</a>         }
-<a class="jxr_linenumber" name="L257" href="#L257">257</a>     }
-<a class="jxr_linenumber" name="L258" href="#L258">258</a> 
-<a class="jxr_linenumber" name="L259" href="#L259">259</a>     <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L260" href="#L260">260</a> <em class="jxr_javadoccomment">     * Write document's content to writer attaching the license using</em>
-<a class="jxr_linenumber" name="L261" href="#L261">261</a> <em class="jxr_javadoccomment">     * the given flags as hints for where to put it.</em>
-<a class="jxr_linenumber" name="L262" href="#L262">262</a> <em class="jxr_javadoccomment">     *</em>
-<a class="jxr_linenumber" name="L263" href="#L263">263</a> <em class="jxr_javadoccomment">     * @return whether the license has actually been written</em>
-<a class="jxr_linenumber" name="L264" href="#L264">264</a> <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="L265" href="#L265">265</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> attachLicense(Writer writer, File document,
-<a class="jxr_linenumber" name="L266" href="#L266">266</a>                                   <strong class="jxr_keyword">boolean</strong> expectsHashPling,
-<a class="jxr_linenumber" name="L267" href="#L267">267</a>                                   <strong class="jxr_keyword">boolean</strong> expectsAtEcho,
-<a class="jxr_linenumber" name="L268" href="#L268">268</a>                                   <strong class="jxr_keyword">boolean</strong> expectsPackage,
-<a class="jxr_linenumber" name="L269" href="#L269">269</a>                                   <strong class="jxr_keyword">boolean</strong> expectsXMLDecl,
-<a class="jxr_linenumber" name="L270" href="#L270">270</a>                                   <strong class="jxr_keyword">boolean</strong> expectsPhpPI,
-<a class="jxr_linenumber" name="L271" href="#L271">271</a>                                   <strong class="jxr_keyword">boolean</strong> expectsMSVSSF)
-<a class="jxr_linenumber" name="L272" href="#L272">272</a>             <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="L273" href="#L273">273</a>         <strong class="jxr_keyword">boolean</strong> written = false;
-<a class="jxr_linenumber" name="L274" href="#L274">274</a>         FileInputStream fis = <strong class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="L275" href="#L275">275</a>         BufferedReader br = <strong class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="L276" href="#L276">276</a>         <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="L277" href="#L277">277</a>             fis = <strong class="jxr_keyword">new</strong> FileInputStream(document);
-<a class="jxr_linenumber" name="L278" href="#L278">278</a>             br = <strong class="jxr_keyword">new</strong> BufferedReader(<strong class="jxr_keyword">new</strong> InputStreamReader(<strong class="jxr_keyword">new</strong> <a name="BOMInputStream" href="../../../../org/apache/rat/annotation/AbstractLicenseAppender.html#BOMInputStream">BOMInputStream</a>(fis)));
-<a class="jxr_linenumber" name="L279" href="#L279">279</a> 
-<a class="jxr_linenumber" name="L280" href="#L280">280</a>             <strong class="jxr_keyword">if</strong> (!expectsHashPling
-<a class="jxr_linenumber" name="L281" href="#L281">281</a>                     &amp;&amp; !expectsAtEcho
-<a class="jxr_linenumber" name="L282" href="#L282">282</a>                     &amp;&amp; !expectsPackage
-<a class="jxr_linenumber" name="L283" href="#L283">283</a>                     &amp;&amp; !expectsXMLDecl
-<a class="jxr_linenumber" name="L284" href="#L284">284</a>                     &amp;&amp; !expectsPhpPI
-<a class="jxr_linenumber" name="L285" href="#L285">285</a>                     &amp;&amp; !expectsMSVSSF) {
-<a class="jxr_linenumber" name="L286" href="#L286">286</a>                 written = <strong class="jxr_keyword">true</strong>;
-<a class="jxr_linenumber" name="L287" href="#L287">287</a>                 writer.write(getLicenseHeader(document));
-<a class="jxr_linenumber" name="L288" href="#L288">288</a>                 writer.write(LINE_SEP);
-<a class="jxr_linenumber" name="L289" href="#L289">289</a>             }
-<a class="jxr_linenumber" name="L290" href="#L290">290</a> 
-<a class="jxr_linenumber" name="L291" href="#L291">291</a>             String line;
-<a class="jxr_linenumber" name="L292" href="#L292">292</a>             <strong class="jxr_keyword">boolean</strong> first = <strong class="jxr_keyword">true</strong>;
-<a class="jxr_linenumber" name="L293" href="#L293">293</a>             <strong class="jxr_keyword">while</strong> ((line = br.readLine()) != <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="L294" href="#L294">294</a>                 <strong class="jxr_keyword">if</strong> (first &amp;&amp; expectsHashPling) {
-<a class="jxr_linenumber" name="L295" href="#L295">295</a>                     written = <strong class="jxr_keyword">true</strong>;
-<a class="jxr_linenumber" name="L296" href="#L296">296</a>                     doFirstLine(document, writer, line, <span class="jxr_string">"#!"</span>);
-<a class="jxr_linenumber" name="L297" href="#L297">297</a>                 } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (first &amp;&amp; expectsAtEcho) {
-<a class="jxr_linenumber" name="L298" href="#L298">298</a>                     written = <strong class="jxr_keyword">true</strong>;
-<a class="jxr_linenumber" name="L299" href="#L299">299</a>                     doFirstLine(document, writer, line, <span class="jxr_string">"@echo"</span>);
-<a class="jxr_linenumber" name="L300" href="#L300">300</a>                 } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (first &amp;&amp; expectsMSVSSF) {
-<a class="jxr_linenumber" name="L301" href="#L301">301</a>                     written = <strong class="jxr_keyword">true</strong>;
-<a class="jxr_linenumber" name="L302" href="#L302">302</a>                     <strong class="jxr_keyword">if</strong> (line.isEmpty()) {
-<a class="jxr_linenumber" name="L303" href="#L303">303</a>                         line = passThroughReadNext(writer, line, br);
-<a class="jxr_linenumber" name="L304" href="#L304">304</a>                     }
-<a class="jxr_linenumber" name="L305" href="#L305">305</a>                     <strong class="jxr_keyword">if</strong> (line.startsWith(<span class="jxr_string">"Microsoft Visual Studio Solution"</span>
-<a class="jxr_linenumber" name="L306" href="#L306">306</a>                             + <span class="jxr_string">" File"</span>)) {
-<a class="jxr_linenumber" name="L307" href="#L307">307</a>                         line = passThroughReadNext(writer, line, br);
-<a class="jxr_linenumber" name="L308" href="#L308">308</a>                     }
-<a class="jxr_linenumber" name="L309" href="#L309">309</a>                     doFirstLine(document, writer, line, <span class="jxr_string">"# Visual "</span>);
-<a class="jxr_linenumber" name="L310" href="#L310">310</a>                 } <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="L311" href="#L311">311</a>                     writer.write(line);
-<a class="jxr_linenumber" name="L312" href="#L312">312</a>                     writer.write(LINE_SEP);
-<a class="jxr_linenumber" name="L313" href="#L313">313</a>                 }
-<a class="jxr_linenumber" name="L314" href="#L314">314</a> 
-<a class="jxr_linenumber" name="L315" href="#L315">315</a>                 <strong class="jxr_keyword">if</strong> (expectsPackage &amp;&amp; line.startsWith(<span class="jxr_string">"package "</span>)) {
-<a class="jxr_linenumber" name="L316" href="#L316">316</a>                     written = <strong class="jxr_keyword">true</strong>;
-<a class="jxr_linenumber" name="L317" href="#L317">317</a>                     writer.write(LINE_SEP);
-<a class="jxr_linenumber" name="L318" href="#L318">318</a>                     writer.write(getLicenseHeader(document));
-<a class="jxr_linenumber" name="L319" href="#L319">319</a>                     writer.write(LINE_SEP);
-<a class="jxr_linenumber" name="L320" href="#L320">320</a>                 } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (expectsXMLDecl &amp;&amp; line.startsWith(<span class="jxr_string">"&lt;?xml "</span>)) {
-<a class="jxr_linenumber" name="L321" href="#L321">321</a>                     written = <strong class="jxr_keyword">true</strong>;
-<a class="jxr_linenumber" name="L322" href="#L322">322</a>                     writer.write(LINE_SEP);
-<a class="jxr_linenumber" name="L323" href="#L323">323</a>                     writer.write(getLicenseHeader(document));
-<a class="jxr_linenumber" name="L324" href="#L324">324</a>                     writer.write(LINE_SEP);
-<a class="jxr_linenumber" name="L325" href="#L325">325</a>                 } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (expectsPhpPI &amp;&amp; line.startsWith(<span class="jxr_string">"&lt;?php"</span>)) {
-<a class="jxr_linenumber" name="L326" href="#L326">326</a>                     written = <strong class="jxr_keyword">true</strong>;
+<a class="jxr_linenumber" name="L76" href="#L76">76</a>      
+<a class="jxr_linenumber" name="L77" href="#L77">77</a>  
+<a class="jxr_linenumber" name="L78" href="#L78">78</a>      <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L79" href="#L79">79</a>  <em class="jxr_javadoccomment">     * the line separator for this OS</em>
+<a class="jxr_linenumber" name="L80" href="#L80">80</a>  <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="L81" href="#L81">81</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String LINE_SEP = System.lineSeparator();
+<a class="jxr_linenumber" name="L82" href="#L82">82</a>  
+<a class="jxr_linenumber" name="L83" href="#L83">83</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong>[] FAMILY_C = <strong class="jxr_keyword">new</strong> <strong class="jxr_keyword">int</strong>[]{
+<a class="jxr_linenumber" name="L84" href="#L84">84</a>              TYPE_JAVA, TYPE_JAVASCRIPT, TYPE_C, TYPE_H, TYPE_SCALA,
+<a class="jxr_linenumber" name="L85" href="#L85">85</a>              TYPE_CSS, TYPE_CPP, TYPE_CSHARP, TYPE_PHP, TYPE_GROOVY,
+<a class="jxr_linenumber" name="L86" href="#L86">86</a>              TYPE_BEANSHELL, TYPE_GO,
+<a class="jxr_linenumber" name="L87" href="#L87">87</a>      };
+<a class="jxr_linenumber" name="L88" href="#L88">88</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong>[] FAMILY_SGML = <strong class="jxr_keyword">new</strong> <strong class="jxr_keyword">int</strong>[]{
+<a class="jxr_linenumber" name="L89" href="#L89">89</a>              TYPE_XML, TYPE_HTML, TYPE_JSP, TYPE_FML, TYPE_MD,
+<a class="jxr_linenumber" name="L90" href="#L90">90</a>      };
+<a class="jxr_linenumber" name="L91" href="#L91">91</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong>[] FAMILY_SH = <strong class="jxr_keyword">new</strong> <strong class="jxr_keyword">int</strong>[]{
+<a class="jxr_linenumber" name="L92" href="#L92">92</a>              TYPE_PROPERTIES, TYPE_PYTHON, TYPE_SH, TYPE_RUBY, TYPE_PERL,
+<a class="jxr_linenumber" name="L93" href="#L93">93</a>              TYPE_TCL, TYPE_VISUAL_STUDIO_SOLUTION, TYPE_PM, TYPE_YAML,
+<a class="jxr_linenumber" name="L94" href="#L94">94</a>      };
+<a class="jxr_linenumber" name="L95" href="#L95">95</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong>[] FAMILY_BAT = <strong class="jxr_keyword">new</strong> <strong class="jxr_keyword">int</strong>[]{
+<a class="jxr_linenumber" name="L96" href="#L96">96</a>              TYPE_BAT,
+<a class="jxr_linenumber" name="L97" href="#L97">97</a>      };
+<a class="jxr_linenumber" name="L98" href="#L98">98</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong>[] FAMILY_APT = <strong class="jxr_keyword">new</strong> <strong class="jxr_keyword">int</strong>[]{
+<a class="jxr_linenumber" name="L99" href="#L99">99</a>              TYPE_APT,
+<a class="jxr_linenumber" name="L100" href="#L100">100</a>     };
+<a class="jxr_linenumber" name="L101" href="#L101">101</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong>[] FAMILY_VELOCITY = <strong class="jxr_keyword">new</strong> <strong class="jxr_keyword">int</strong>[]{
+<a class="jxr_linenumber" name="L102" href="#L102">102</a>             TYPE_VM,
+<a class="jxr_linenumber" name="L103" href="#L103">103</a>     };
+<a class="jxr_linenumber" name="L104" href="#L104">104</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong>[] EXPECTS_HASH_PLING = <strong class="jxr_keyword">new</strong> <strong class="jxr_keyword">int</strong>[]{
+<a class="jxr_linenumber" name="L105" href="#L105">105</a>             TYPE_PYTHON, TYPE_SH, TYPE_RUBY, TYPE_PERL, TYPE_TCL,
+<a class="jxr_linenumber" name="L106" href="#L106">106</a>     };
+<a class="jxr_linenumber" name="L107" href="#L107">107</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong>[] EXPECTS_AT_ECHO = <strong class="jxr_keyword">new</strong> <strong class="jxr_keyword">int</strong>[]{
+<a class="jxr_linenumber" name="L108" href="#L108">108</a>             TYPE_BAT,
+<a class="jxr_linenumber" name="L109" href="#L109">109</a>     };
+<a class="jxr_linenumber" name="L110" href="#L110">110</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong>[] EXPECTS_PACKAGE = <strong class="jxr_keyword">new</strong> <strong class="jxr_keyword">int</strong>[]{
+<a class="jxr_linenumber" name="L111" href="#L111">111</a>             TYPE_JAVA, TYPE_GO, TYPE_PM,
+<a class="jxr_linenumber" name="L112" href="#L112">112</a>     };
+<a class="jxr_linenumber" name="L113" href="#L113">113</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong>[] EXPECTS_XML_DECL = <strong class="jxr_keyword">new</strong> <strong class="jxr_keyword">int</strong>[]{
+<a class="jxr_linenumber" name="L114" href="#L114">114</a>             TYPE_XML,
+<a class="jxr_linenumber" name="L115" href="#L115">115</a>     };
+<a class="jxr_linenumber" name="L116" href="#L116">116</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong>[] EXPECTS_PHP_PI = <strong class="jxr_keyword">new</strong> <strong class="jxr_keyword">int</strong>[]{
+<a class="jxr_linenumber" name="L117" href="#L117">117</a>             TYPE_PHP,
+<a class="jxr_linenumber" name="L118" href="#L118">118</a>     };
+<a class="jxr_linenumber" name="L119" href="#L119">119</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong>[] EXPECTS_MSVSSF_HEADER = <strong class="jxr_keyword">new</strong> <strong class="jxr_keyword">int</strong>[]{
+<a class="jxr_linenumber" name="L120" href="#L120">120</a>             TYPE_VISUAL_STUDIO_SOLUTION,
+<a class="jxr_linenumber" name="L121" href="#L121">121</a>     };
+<a class="jxr_linenumber" name="L122" href="#L122">122</a> 
+<a class="jxr_linenumber" name="L123" href="#L123">123</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Map&lt;String, Integer&gt; EXT2TYPE = <strong class="jxr_keyword">new</strong> HashMap&lt;&gt;();
+<a class="jxr_linenumber" name="L124" href="#L124">124</a> 
+<a class="jxr_linenumber" name="L125" href="#L125">125</a>     <strong class="jxr_keyword">static</strong> {
+<a class="jxr_linenumber" name="L126" href="#L126">126</a>         <em class="jxr_comment">// these arrays are used in Arrays.binarySearch so they must</em>
+<a class="jxr_linenumber" name="L127" href="#L127">127</a>         <em class="jxr_comment">// be sorted</em>
+<a class="jxr_linenumber" name="L128" href="#L128">128</a>         Arrays.sort(FAMILY_C);
+<a class="jxr_linenumber" name="L129" href="#L129">129</a>         Arrays.sort(FAMILY_SGML);
+<a class="jxr_linenumber" name="L130" href="#L130">130</a>         Arrays.sort(FAMILY_SH);
+<a class="jxr_linenumber" name="L131" href="#L131">131</a>         Arrays.sort(FAMILY_BAT);
+<a class="jxr_linenumber" name="L132" href="#L132">132</a>         Arrays.sort(FAMILY_APT);
+<a class="jxr_linenumber" name="L133" href="#L133">133</a>         Arrays.sort(FAMILY_VELOCITY);
+<a class="jxr_linenumber" name="L134" href="#L134">134</a> 
+<a class="jxr_linenumber" name="L135" href="#L135">135</a>         Arrays.sort(EXPECTS_HASH_PLING);
+<a class="jxr_linenumber" name="L136" href="#L136">136</a>         Arrays.sort(EXPECTS_AT_ECHO);
+<a class="jxr_linenumber" name="L137" href="#L137">137</a>         Arrays.sort(EXPECTS_PACKAGE);
+<a class="jxr_linenumber" name="L138" href="#L138">138</a>         Arrays.sort(EXPECTS_XML_DECL);
+<a class="jxr_linenumber" name="L139" href="#L139">139</a>         Arrays.sort(EXPECTS_MSVSSF_HEADER);
+<a class="jxr_linenumber" name="L140" href="#L140">140</a> 
+<a class="jxr_linenumber" name="L141" href="#L141">141</a>         EXT2TYPE.put(<span class="jxr_string">"apt"</span>, TYPE_APT);
+<a class="jxr_linenumber" name="L142" href="#L142">142</a>         EXT2TYPE.put(<span class="jxr_string">"asax"</span>, TYPE_HTML);
+<a class="jxr_linenumber" name="L143" href="#L143">143</a>         EXT2TYPE.put(<span class="jxr_string">"ascx"</span>, TYPE_HTML);
+<a class="jxr_linenumber" name="L144" href="#L144">144</a>         EXT2TYPE.put(<span class="jxr_string">"aspx"</span>, TYPE_HTML);
+<a class="jxr_linenumber" name="L145" href="#L145">145</a>         EXT2TYPE.put(<span class="jxr_string">"bat"</span>, TYPE_BAT);
+<a class="jxr_linenumber" name="L146" href="#L146">146</a>         EXT2TYPE.put(<span class="jxr_string">"bsh"</span>, TYPE_BEANSHELL);
+<a class="jxr_linenumber" name="L147" href="#L147">147</a>         EXT2TYPE.put(<span class="jxr_string">"c"</span>, TYPE_C);
+<a class="jxr_linenumber" name="L148" href="#L148">148</a>         EXT2TYPE.put(<span class="jxr_string">"cc"</span>, TYPE_CPP);
+<a class="jxr_linenumber" name="L149" href="#L149">149</a>         EXT2TYPE.put(<span class="jxr_string">"cmd"</span>, TYPE_BAT);
+<a class="jxr_linenumber" name="L150" href="#L150">150</a>         EXT2TYPE.put(<span class="jxr_string">"config"</span>, TYPE_XML);
+<a class="jxr_linenumber" name="L151" href="#L151">151</a>         EXT2TYPE.put(<span class="jxr_string">"cpp"</span>, TYPE_CPP);
+<a class="jxr_linenumber" name="L152" href="#L152">152</a>         EXT2TYPE.put(<span class="jxr_string">"cs"</span>, TYPE_CSHARP);
+<a class="jxr_linenumber" name="L153" href="#L153">153</a>         EXT2TYPE.put(<span class="jxr_string">"csdproj"</span>, TYPE_XML);
+<a class="jxr_linenumber" name="L154" href="#L154">154</a>         EXT2TYPE.put(<span class="jxr_string">"csproj"</span>, TYPE_XML);
+<a class="jxr_linenumber" name="L155" href="#L155">155</a>         EXT2TYPE.put(<span class="jxr_string">"css"</span>, TYPE_CSS);
+<a class="jxr_linenumber" name="L156" href="#L156">156</a>         EXT2TYPE.put(<span class="jxr_string">"fxcop"</span>, TYPE_XML);
+<a class="jxr_linenumber" name="L157" href="#L157">157</a>         EXT2TYPE.put(<span class="jxr_string">"fml"</span>, TYPE_FML);
+<a class="jxr_linenumber" name="L158" href="#L158">158</a>         EXT2TYPE.put(<span class="jxr_string">"groovy"</span>, TYPE_GROOVY);
+<a class="jxr_linenumber" name="L159" href="#L159">159</a>         EXT2TYPE.put(<span class="jxr_string">"go"</span>, TYPE_GO);
+<a class="jxr_linenumber" name="L160" href="#L160">160</a>         EXT2TYPE.put(<span class="jxr_string">"h"</span>, TYPE_H);
+<a class="jxr_linenumber" name="L161" href="#L161">161</a>         EXT2TYPE.put(<span class="jxr_string">"hh"</span>, TYPE_H);
+<a class="jxr_linenumber" name="L162" href="#L162">162</a>         EXT2TYPE.put(<span class="jxr_string">"hpp"</span>, TYPE_H);
+<a class="jxr_linenumber" name="L163" href="#L163">163</a>         EXT2TYPE.put(<span class="jxr_string">"htm"</span>, TYPE_HTML);
+<a class="jxr_linenumber" name="L164" href="#L164">164</a>         EXT2TYPE.put(<span class="jxr_string">"html"</span>, TYPE_HTML);
+<a class="jxr_linenumber" name="L165" href="#L165">165</a>         EXT2TYPE.put(<span class="jxr_string">"java"</span>, TYPE_JAVA);
+<a class="jxr_linenumber" name="L166" href="#L166">166</a>         EXT2TYPE.put(<span class="jxr_string">"js"</span>, TYPE_JAVASCRIPT);
+<a class="jxr_linenumber" name="L167" href="#L167">167</a>         EXT2TYPE.put(<span class="jxr_string">"jsp"</span>, TYPE_JSP);
+<a class="jxr_linenumber" name="L168" href="#L168">168</a>         EXT2TYPE.put(<span class="jxr_string">"md"</span>, TYPE_MD);
+<a class="jxr_linenumber" name="L169" href="#L169">169</a>         EXT2TYPE.put(<span class="jxr_string">"ndoc"</span>, TYPE_XML);
+<a class="jxr_linenumber" name="L170" href="#L170">170</a>         EXT2TYPE.put(<span class="jxr_string">"nunit"</span>, TYPE_XML);
+<a class="jxr_linenumber" name="L171" href="#L171">171</a>         EXT2TYPE.put(<span class="jxr_string">"php"</span>, TYPE_PHP);
+<a class="jxr_linenumber" name="L172" href="#L172">172</a>         EXT2TYPE.put(<span class="jxr_string">"pl"</span>, TYPE_PERL);
+<a class="jxr_linenumber" name="L173" href="#L173">173</a>         EXT2TYPE.put(<span class="jxr_string">"pm"</span>, TYPE_PM);
+<a class="jxr_linenumber" name="L174" href="#L174">174</a>         EXT2TYPE.put(<span class="jxr_string">"properties"</span>, TYPE_PROPERTIES);
+<a class="jxr_linenumber" name="L175" href="#L175">175</a>         EXT2TYPE.put(<span class="jxr_string">"py"</span>, TYPE_PYTHON);
+<a class="jxr_linenumber" name="L176" href="#L176">176</a>         EXT2TYPE.put(<span class="jxr_string">"rb"</span>, TYPE_RUBY);
+<a class="jxr_linenumber" name="L177" href="#L177">177</a>         EXT2TYPE.put(<span class="jxr_string">"rdf"</span>, TYPE_XML);
+<a class="jxr_linenumber" name="L178" href="#L178">178</a>         EXT2TYPE.put(<span class="jxr_string">"resx"</span>, TYPE_XML);
+<a class="jxr_linenumber" name="L179" href="#L179">179</a>         EXT2TYPE.put(<span class="jxr_string">"scala"</span>, TYPE_SCALA);
+<a class="jxr_linenumber" name="L180" href="#L180">180</a>         EXT2TYPE.put(<span class="jxr_string">"sh"</span>, TYPE_SH);
+<a class="jxr_linenumber" name="L181" href="#L181">181</a>         EXT2TYPE.put(<span class="jxr_string">"shfbproj"</span>, TYPE_XML);
+<a class="jxr_linenumber" name="L182" href="#L182">182</a>         EXT2TYPE.put(<span class="jxr_string">"sln"</span>, TYPE_VISUAL_STUDIO_SOLUTION);
+<a class="jxr_linenumber" name="L183" href="#L183">183</a>         EXT2TYPE.put(<span class="jxr_string">"stylecop"</span>, TYPE_XML);
+<a class="jxr_linenumber" name="L184" href="#L184">184</a>         EXT2TYPE.put(<span class="jxr_string">"svg"</span>, TYPE_XML);
+<a class="jxr_linenumber" name="L185" href="#L185">185</a>         EXT2TYPE.put(<span class="jxr_string">"tcl"</span>, TYPE_TCL);
+<a class="jxr_linenumber" name="L186" href="#L186">186</a>         EXT2TYPE.put(<span class="jxr_string">"vbdproj"</span>, TYPE_XML);
+<a class="jxr_linenumber" name="L187" href="#L187">187</a>         EXT2TYPE.put(<span class="jxr_string">"vbproj"</span>, TYPE_XML);
+<a class="jxr_linenumber" name="L188" href="#L188">188</a>         EXT2TYPE.put(<span class="jxr_string">"vcproj"</span>, TYPE_XML);
+<a class="jxr_linenumber" name="L189" href="#L189">189</a>         EXT2TYPE.put(<span class="jxr_string">"vm"</span>, TYPE_VM);
+<a class="jxr_linenumber" name="L190" href="#L190">190</a>         EXT2TYPE.put(<span class="jxr_string">"vsdisco"</span>, TYPE_XML);
+<a class="jxr_linenumber" name="L191" href="#L191">191</a>         EXT2TYPE.put(<span class="jxr_string">"webinfo"</span>, TYPE_XML);
+<a class="jxr_linenumber" name="L192" href="#L192">192</a>         EXT2TYPE.put(<span class="jxr_string">"xml"</span>, TYPE_XML);
+<a class="jxr_linenumber" name="L193" href="#L193">193</a>         EXT2TYPE.put(<span class="jxr_string">"xproj"</span>, TYPE_XML);
+<a class="jxr_linenumber" name="L194" href="#L194">194</a>         EXT2TYPE.put(<span class="jxr_string">"xsl"</span>, TYPE_XML);
+<a class="jxr_linenumber" name="L195" href="#L195">195</a>         EXT2TYPE.put(<span class="jxr_string">"yaml"</span>, TYPE_YAML);
+<a class="jxr_linenumber" name="L196" href="#L196">196</a>         EXT2TYPE.put(<span class="jxr_string">"yml"</span>, TYPE_YAML);
+<a class="jxr_linenumber" name="L197" href="#L197">197</a>     }
+<a class="jxr_linenumber" name="L198" href="#L198">198</a> 
+<a class="jxr_linenumber" name="L199" href="#L199">199</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> isForced;
+<a class="jxr_linenumber" name="L200" href="#L200">200</a>     <em class="jxr_javadoccomment">/** The log to use */</em>
+<a class="jxr_linenumber" name="L201" href="#L201">201</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a name="Log" href="../../../../org/apache/rat/utils/Log.html#Log">Log</a> log;
+<a class="jxr_linenumber" name="L202" href="#L202">202</a> 
+<a class="jxr_linenumber" name="L203" href="#L203">203</a>     <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L204" href="#L204">204</a> <em class="jxr_javadoccomment">     * Constructor</em>
+<a class="jxr_linenumber" name="L205" href="#L205">205</a> <em class="jxr_javadoccomment">     * @param log The log to use.</em>
+<a class="jxr_linenumber" name="L206" href="#L206">206</a> <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="L207" href="#L207">207</a>     <strong class="jxr_keyword">public</strong> <a name="AbstractLicenseAppender" href="../../../../org/apache/rat/annotation/AbstractLicenseAppender.html#AbstractLicenseAppender">AbstractLicenseAppender</a>(<strong class="jxr_keyword">final</strong> <a name="Log" href="../../../../org/apache/rat/utils/Log.html#Log">Log</a> log) {
+<a class="jxr_linenumber" name="L208" href="#L208">208</a>         <strong class="jxr_keyword">super</strong>();
+<a class="jxr_linenumber" name="L209" href="#L209">209</a>         <strong class="jxr_keyword">this</strong>.log = log;
+<a class="jxr_linenumber" name="L210" href="#L210">210</a>     }
+<a class="jxr_linenumber" name="L211" href="#L211">211</a> 
+<a class="jxr_linenumber" name="L212" href="#L212">212</a>     <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L213" href="#L213">213</a> <em class="jxr_javadoccomment">     * Append the default license header to the supplied document.</em>
+<a class="jxr_linenumber" name="L214" href="#L214">214</a> <em class="jxr_javadoccomment">     *</em>
+<a class="jxr_linenumber" name="L215" href="#L215">215</a> <em class="jxr_javadoccomment">     * @param document document to append to.</em>
+<a class="jxr_linenumber" name="L216" href="#L216">216</a> <em class="jxr_javadoccomment">     * @throws IOException if there is a problem while reading or writing the file</em>
+<a class="jxr_linenumber" name="L217" href="#L217">217</a> <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="L218" href="#L218">218</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> append(File document) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="L219" href="#L219">219</a>         <strong class="jxr_keyword">int</strong> type = getType(document);
+<a class="jxr_linenumber" name="L220" href="#L220">220</a>         <strong class="jxr_keyword">if</strong> (type == TYPE_UNKNOWN) {
+<a class="jxr_linenumber" name="L221" href="#L221">221</a>             <strong class="jxr_keyword">return</strong>;
+<a class="jxr_linenumber" name="L222" href="#L222">222</a>         }
+<a class="jxr_linenumber" name="L223" href="#L223">223</a> 
+<a class="jxr_linenumber" name="L224" href="#L224">224</a>         <strong class="jxr_keyword">boolean</strong> expectsHashPling = expectsHashPling(type);
+<a class="jxr_linenumber" name="L225" href="#L225">225</a>         <strong class="jxr_keyword">boolean</strong> expectsAtEcho = expectsAtEcho(type);
+<a class="jxr_linenumber" name="L226" href="#L226">226</a>         <strong class="jxr_keyword">boolean</strong> expectsPackage = expectsPackage(type);
+<a class="jxr_linenumber" name="L227" href="#L227">227</a>         <strong class="jxr_keyword">boolean</strong> expectsXMLDecl = expectsXMLDecl(type);
+<a class="jxr_linenumber" name="L228" href="#L228">228</a>         <strong class="jxr_keyword">boolean</strong> expectsPhpPI = expectsPhpPI(type);
+<a class="jxr_linenumber" name="L229" href="#L229">229</a>         <strong class="jxr_keyword">boolean</strong> expectsMSVSSF = expectsMSVisualStudioSolutionFileHeader(type);
+<a class="jxr_linenumber" name="L230" href="#L230">230</a> 
+<a class="jxr_linenumber" name="L231" href="#L231">231</a>         File newDocument = <strong class="jxr_keyword">new</strong> File(document.getAbsolutePath() + <span class="jxr_string">".new"</span>);
+<a class="jxr_linenumber" name="L232" href="#L232">232</a>         FileWriter writer = <strong class="jxr_keyword">new</strong> FileWriter(newDocument);
+<a class="jxr_linenumber" name="L233" href="#L233">233</a>         <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="L234" href="#L234">234</a>             <strong class="jxr_keyword">if</strong> (!attachLicense(writer, document,
+<a class="jxr_linenumber" name="L235" href="#L235">235</a>                     expectsHashPling, expectsAtEcho, expectsPackage,
+<a class="jxr_linenumber" name="L236" href="#L236">236</a>                     expectsXMLDecl, expectsPhpPI, expectsMSVSSF)) {
+<a class="jxr_linenumber" name="L237" href="#L237">237</a>                 <em class="jxr_comment">// Java File without package, XML file without decl or PHP</em>
+<a class="jxr_linenumber" name="L238" href="#L238">238</a>                 <em class="jxr_comment">// file without PI</em>
+<a class="jxr_linenumber" name="L239" href="#L239">239</a>                 <em class="jxr_comment">// for Java just place the license at the front, for XML add</em>
+<a class="jxr_linenumber" name="L240" href="#L240">240</a>                 <em class="jxr_comment">// an XML decl first - don't know how to handle PHP</em>
+<a class="jxr_linenumber" name="L241" href="#L241">241</a>                 <strong class="jxr_keyword">if</strong> (expectsPackage || expectsXMLDecl) {
+<a class="jxr_linenumber" name="L242" href="#L242">242</a>                     writer = <strong class="jxr_keyword">new</strong> FileWriter(newDocument);
+<a class="jxr_linenumber" name="L243" href="#L243">243</a>                     <strong class="jxr_keyword">if</strong> (expectsXMLDecl) {
+<a class="jxr_linenumber" name="L244" href="#L244">244</a>                         writer.write(<span class="jxr_string">"&lt;?xml version='1.0'?&gt;"</span>);
+<a class="jxr_linenumber" name="L245" href="#L245">245</a>                         writer.write(LINE_SEP);
+<a class="jxr_linenumber" name="L246" href="#L246">246</a>                     }
+<a class="jxr_linenumber" name="L247" href="#L247">247</a>                     attachLicense(writer, document,
+<a class="jxr_linenumber" name="L248" href="#L248">248</a>                             false, false, false, false, false, false);
+<a class="jxr_linenumber" name="L249" href="#L249">249</a>                 }
+<a class="jxr_linenumber" name="L250" href="#L250">250</a>             }
+<a class="jxr_linenumber" name="L251" href="#L251">251</a>         } <strong class="jxr_keyword">finally</strong> {
+<a class="jxr_linenumber" name="L252" href="#L252">252</a>             IOUtils.closeQuietly(writer);
+<a class="jxr_linenumber" name="L253" href="#L253">253</a>         }
+<a class="jxr_linenumber" name="L254" href="#L254">254</a> 
+<a class="jxr_linenumber" name="L255" href="#L255">255</a>         <strong class="jxr_keyword">if</strong> (isForced) {
+<a class="jxr_linenumber" name="L256" href="#L256">256</a>             <strong class="jxr_keyword">boolean</strong> deleted = document.delete();
+<a class="jxr_linenumber" name="L257" href="#L257">257</a>             <strong class="jxr_keyword">if</strong> (!deleted) {
+<a class="jxr_linenumber" name="L258" href="#L258">258</a>                 log.error(<span class="jxr_string">"Could not delete original file to prepare renaming."</span>);
+<a class="jxr_linenumber" name="L259" href="#L259">259</a>             }
+<a class="jxr_linenumber" name="L260" href="#L260">260</a>             <strong class="jxr_keyword">boolean</strong> renamed = newDocument.renameTo(document.getAbsoluteFile());
+<a class="jxr_linenumber" name="L261" href="#L261">261</a>             <strong class="jxr_keyword">if</strong> (!renamed) {
+<a class="jxr_linenumber" name="L262" href="#L262">262</a>                 log.error(<span class="jxr_string">"Failed to rename new file, original file remains unchanged."</span>);
+<a class="jxr_linenumber" name="L263" href="#L263">263</a>             }
+<a class="jxr_linenumber" name="L264" href="#L264">264</a>         }
+<a class="jxr_linenumber" name="L265" href="#L265">265</a>     }
+<a class="jxr_linenumber" name="L266" href="#L266">266</a> 
+<a class="jxr_linenumber" name="L267" href="#L267">267</a>     <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L268" href="#L268">268</a> <em class="jxr_javadoccomment">     * Write document's content to writer attaching the license using</em>
+<a class="jxr_linenumber" name="L269" href="#L269">269</a> <em class="jxr_javadoccomment">     * the given flags as hints for where to put it.</em>
+<a class="jxr_linenumber" name="L270" href="#L270">270</a> <em class="jxr_javadoccomment">     *</em>
+<a class="jxr_linenumber" name="L271" href="#L271">271</a> <em class="jxr_javadoccomment">     * @return whether the license has actually been written</em>
+<a class="jxr_linenumber" name="L272" href="#L272">272</a> <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="L273" href="#L273">273</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> attachLicense(Writer writer, File document,
+<a class="jxr_linenumber" name="L274" href="#L274">274</a>                                   <strong class="jxr_keyword">boolean</strong> expectsHashPling,
+<a class="jxr_linenumber" name="L275" href="#L275">275</a>                                   <strong class="jxr_keyword">boolean</strong> expectsAtEcho,
+<a class="jxr_linenumber" name="L276" href="#L276">276</a>                                   <strong class="jxr_keyword">boolean</strong> expectsPackage,
+<a class="jxr_linenumber" name="L277" href="#L277">277</a>                                   <strong class="jxr_keyword">boolean</strong> expectsXMLDecl,
+<a class="jxr_linenumber" name="L278" href="#L278">278</a>                                   <strong class="jxr_keyword">boolean</strong> expectsPhpPI,
+<a class="jxr_linenumber" name="L279" href="#L279">279</a>                                   <strong class="jxr_keyword">boolean</strong> expectsMSVSSF)
+<a class="jxr_linenumber" name="L280" href="#L280">280</a>             <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="L281" href="#L281">281</a>         <strong class="jxr_keyword">boolean</strong> written = false;
+<a class="jxr_linenumber" name="L282" href="#L282">282</a>         FileInputStream fis = <strong class="jxr_keyword">null</strong>;
+<a class="jxr_linenumber" name="L283" href="#L283">283</a>         BufferedReader br = <strong class="jxr_keyword">null</strong>;
+<a class="jxr_linenumber" name="L284" href="#L284">284</a>         <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="L285" href="#L285">285</a>             fis = <strong class="jxr_keyword">new</strong> FileInputStream(document);
+<a class="jxr_linenumber" name="L286" href="#L286">286</a>             br = <strong class="jxr_keyword">new</strong> BufferedReader(<strong class="jxr_keyword">new</strong> InputStreamReader(<strong class="jxr_keyword">new</strong> <a name="BOMInputStream" href="../../../../org/apache/rat/annotation/AbstractLicenseAppender.html#BOMInputStream">BOMInputStream</a>(fis)));
+<a class="jxr_linenumber" name="L287" href="#L287">287</a> 
+<a class="jxr_linenumber" name="L288" href="#L288">288</a>             <strong class="jxr_keyword">if</strong> (!expectsHashPling
+<a class="jxr_linenumber" name="L289" href="#L289">289</a>                     &amp;&amp; !expectsAtEcho
+<a class="jxr_linenumber" name="L290" href="#L290">290</a>                     &amp;&amp; !expectsPackage
+<a class="jxr_linenumber" name="L291" href="#L291">291</a>                     &amp;&amp; !expectsXMLDecl
+<a class="jxr_linenumber" name="L292" href="#L292">292</a>                     &amp;&amp; !expectsPhpPI
+<a class="jxr_linenumber" name="L293" href="#L293">293</a>                     &amp;&amp; !expectsMSVSSF) {
+<a class="jxr_linenumber" name="L294" href="#L294">294</a>                 written = <strong class="jxr_keyword">true</strong>;
+<a class="jxr_linenumber" name="L295" href="#L295">295</a>                 writer.write(getLicenseHeader(document));
+<a class="jxr_linenumber" name="L296" href="#L296">296</a>                 writer.write(LINE_SEP);
+<a class="jxr_linenumber" name="L297" href="#L297">297</a>             }
+<a class="jxr_linenumber" name="L298" href="#L298">298</a> 
+<a class="jxr_linenumber" name="L299" href="#L299">299</a>             String line;
+<a class="jxr_linenumber" name="L300" href="#L300">300</a>             <strong class="jxr_keyword">boolean</strong> first = <strong class="jxr_keyword">true</strong>;
+<a class="jxr_linenumber" name="L301" href="#L301">301</a>             <strong class="jxr_keyword">while</strong> ((line = br.readLine()) != <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="L302" href="#L302">302</a>                 <strong class="jxr_keyword">if</strong> (first &amp;&amp; expectsHashPling) {
+<a class="jxr_linenumber" name="L303" href="#L303">303</a>                     written = <strong class="jxr_keyword">true</strong>;
+<a class="jxr_linenumber" name="L304" href="#L304">304</a>                     doFirstLine(document, writer, line, <span class="jxr_string">"#!"</span>);
+<a class="jxr_linenumber" name="L305" href="#L305">305</a>                 } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (first &amp;&amp; expectsAtEcho) {
+<a class="jxr_linenumber" name="L306" href="#L306">306</a>                     written = <strong class="jxr_keyword">true</strong>;
+<a class="jxr_linenumber" name="L307" href="#L307">307</a>                     doFirstLine(document, writer, line, <span class="jxr_string">"@echo"</span>);
+<a class="jxr_linenumber" name="L308" href="#L308">308</a>                 } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (first &amp;&amp; expectsMSVSSF) {
+<a class="jxr_linenumber" name="L309" href="#L309">309</a>                     written = <strong class="jxr_keyword">true</strong>;
+<a class="jxr_linenumber" name="L310" href="#L310">310</a>                     <strong class="jxr_keyword">if</strong> (line.isEmpty()) {
+<a class="jxr_linenumber" name="L311" href="#L311">311</a>                         line = passThroughReadNext(writer, line, br);
+<a class="jxr_linenumber" name="L312" href="#L312">312</a>                     }
+<a class="jxr_linenumber" name="L313" href="#L313">313</a>                     <strong class="jxr_keyword">if</strong> (line.startsWith(<span class="jxr_string">"Microsoft Visual Studio Solution"</span>
+<a class="jxr_linenumber" name="L314" href="#L314">314</a>                             + <span class="jxr_string">" File"</span>)) {
+<a class="jxr_linenumber" name="L315" href="#L315">315</a>                         line = passThroughReadNext(writer, line, br);
+<a class="jxr_linenumber" name="L316" href="#L316">316</a>                     }
+<a class="jxr_linenumber" name="L317" href="#L317">317</a>                     doFirstLine(document, writer, line, <span class="jxr_string">"# Visual "</span>);
+<a class="jxr_linenumber" name="L318" href="#L318">318</a>                 } <strong class="jxr_keyword">else</strong> {
+<a class="jxr_linenumber" name="L319" href="#L319">319</a>                     writer.write(line);
+<a class="jxr_linenumber" name="L320" href="#L320">320</a>                     writer.write(LINE_SEP);
+<a class="jxr_linenumber" name="L321" href="#L321">321</a>                 }
+<a class="jxr_linenumber" name="L322" href="#L322">322</a> 
+<a class="jxr_linenumber" name="L323" href="#L323">323</a>                 <strong class="jxr_keyword">if</strong> (expectsPackage &amp;&amp; line.startsWith(<span class="jxr_string">"package "</span>)) {
+<a class="jxr_linenumber" name="L324" href="#L324">324</a>                     written = <strong class="jxr_keyword">true</strong>;
+<a class="jxr_linenumber" name="L325" href="#L325">325</a>                     writer.write(LINE_SEP);
+<a class="jxr_linenumber" name="L326" href="#L326">326</a>                     writer.write(getLicenseHeader(document));
 <a class="jxr_linenumber" name="L327" href="#L327">327</a>                     writer.write(LINE_SEP);
-<a class="jxr_linenumber" name="L328" href="#L328">328</a>                     writer.write(getLicenseHeader(document));
-<a class="jxr_linenumber" name="L329" href="#L329">329</a>                     writer.write(LINE_SEP);
-<a class="jxr_linenumber" name="L330" href="#L330">330</a>                 }
-<a class="jxr_linenumber" name="L331" href="#L331">331</a>                 first = false;
-<a class="jxr_linenumber" name="L332" href="#L332">332</a>             }
-<a class="jxr_linenumber" name="L333" href="#L333">333</a>         } <strong class="jxr_keyword">finally</strong> {
-<a class="jxr_linenumber" name="L334" href="#L334">334</a>             IOUtils.closeQuietly(br);
-<a class="jxr_linenumber" name="L335" href="#L335">335</a>             IOUtils.closeQuietly(fis);
-<a class="jxr_linenumber" name="L336" href="#L336">336</a>             IOUtils.closeQuietly(writer);
-<a class="jxr_linenumber" name="L337" href="#L337">337</a>         }
-<a class="jxr_linenumber" name="L338" href="#L338">338</a>         <strong class="jxr_keyword">return</strong> written;
-<a class="jxr_linenumber" name="L339" href="#L339">339</a>     }
-<a class="jxr_linenumber" name="L340" href="#L340">340</a> 
-<a class="jxr_linenumber" name="L341" href="#L341">341</a>     <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L342" href="#L342">342</a> <em class="jxr_javadoccomment">     * Check first line for specified text and process.</em>
-<a class="jxr_linenumber" name="L343" href="#L343">343</a> <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="L344" href="#L344">344</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> doFirstLine(File document, Writer writer, String line, String lookfor) <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="L345" href="#L345">345</a>         <strong class="jxr_keyword">if</strong> (line.startsWith(lookfor)) {
-<a class="jxr_linenumber" name="L346" href="#L346">346</a>             writer.write(line);
-<a class="jxr_linenumber" name="L347" href="#L347">347</a>             writer.write(LINE_SEP);
-<a class="jxr_linenumber" name="L348" href="#L348">348</a>             writer.write(getLicenseHeader(document));
-<a class="jxr_linenumber" name="L349" href="#L349">349</a>         } <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="L350" href="#L350">350</a>             writer.write(getLicenseHeader(document));
-<a class="jxr_linenumber" name="L351" href="#L351">351</a>             writer.write(line);
-<a class="jxr_linenumber" name="L352" href="#L352">352</a>             writer.write(LINE_SEP);
-<a class="jxr_linenumber" name="L353" href="#L353">353</a>         }
-<a class="jxr_linenumber" name="L354" href="#L354">354</a>     }
-<a class="jxr_linenumber" name="L355" href="#L355">355</a> 
-<a class="jxr_linenumber" name="L356" href="#L356">356</a>     <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L357" href="#L357">357</a> <em class="jxr_javadoccomment">     * Detect the type of document.</em>
-<a class="jxr_linenumber" name="L358" href="#L358">358</a> <em class="jxr_javadoccomment">     *</em>
-<a class="jxr_linenumber" name="L359" href="#L359">359</a> <em class="jxr_javadoccomment">     * @param document to retrieve type from.</em>
-<a class="jxr_linenumber" name="L360" href="#L360">360</a> <em class="jxr_javadoccomment">     * @return not null</em>
-<a class="jxr_linenumber" name="L361" href="#L361">361</a> <em class="jxr_javadoccomment">     * TODO use existing mechanism to detect the type of a file and record it in the report output, thus we will not need this duplication here.</em>
-<a class="jxr_linenumber" name="L362" href="#L362">362</a> <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="L363" href="#L363">363</a>     <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">int</strong> getType(File document) {
-<a class="jxr_linenumber" name="L364" href="#L364">364</a>         String path = document.getPath();
-<a class="jxr_linenumber" name="L365" href="#L365">365</a>         <strong class="jxr_keyword">int</strong> lastDot = path.lastIndexOf(DOT);
-<a class="jxr_linenumber" name="L366" href="#L366">366</a>         <strong class="jxr_keyword">if</strong> (lastDot &gt;= 0 &amp;&amp; lastDot &lt; path.length() - 1) {
-<a class="jxr_linenumber" name="L367" href="#L367">367</a>             String ext = path.substring(lastDot + 1);
-<a class="jxr_linenumber" name="L368" href="#L368">368</a>             Integer type = EXT2TYPE.get(ext);
-<a class="jxr_linenumber" name="L369" href="#L369">369</a>             <strong class="jxr_keyword">if</strong> (type != <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="L370" href="#L370">370</a>                 <strong class="jxr_keyword">return</strong> type;
-<a class="jxr_linenumber" name="L371" href="#L371">371</a>             }
-<a class="jxr_linenumber" name="L372" href="#L372">372</a>         }
-<a class="jxr_linenumber" name="L373" href="#L373">373</a>         <strong class="jxr_keyword">return</strong> TYPE_UNKNOWN;
-<a class="jxr_linenumber" name="L374" href="#L374">374</a>     }
-<a class="jxr_linenumber" name="L375" href="#L375">375</a> 
-<a class="jxr_linenumber" name="L376" href="#L376">376</a>     <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L377" href="#L377">377</a> <em class="jxr_javadoccomment">     * Set the force flag on this appender. If this flag is set</em>
-<a class="jxr_linenumber" name="L378" href="#L378">378</a> <em class="jxr_javadoccomment">     * to true then files will be modified directly, otherwise</em>
-<a class="jxr_linenumber" name="L379" href="#L379">379</a> <em class="jxr_javadoccomment">     * new files will be created alongside the existing files.</em>
-<a class="jxr_linenumber" name="L380" href="#L380">380</a> <em class="jxr_javadoccomment">     *</em>
-<a class="jxr_linenumber" name="L381" href="#L381">381</a> <em class="jxr_javadoccomment">     * @param force force flag.</em>
-<a class="jxr_linenumber" name="L382" href="#L382">382</a> <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="L383" href="#L383">383</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setForce(<strong class="jxr_keyword">boolean</strong> force) {
-<a class="jxr_linenumber" name="L384" href="#L384">384</a>         isForced = force;
-<a class="jxr_linenumber" name="L385" href="#L385">385</a>     }
-<a class="jxr_linenumber" name="L386" href="#L386">386</a> 
-<a class="jxr_linenumber" name="L387" href="#L387">387</a>     <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L388" href="#L388">388</a> <em class="jxr_javadoccomment">     * @param document document to extract from.</em>
-<a class="jxr_linenumber" name="L389" href="#L389">389</a> <em class="jxr_javadoccomment">     * @return Get the license header of a document.</em>
+<a class="jxr_linenumber" name="L328" href="#L328">328</a>                 } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (expectsXMLDecl &amp;&amp; line.startsWith(<span class="jxr_string">"&lt;?xml "</span>)) {
+<a class="jxr_linenumber" name="L329" href="#L329">329</a>                     written = <strong class="jxr_keyword">true</strong>;
+<a class="jxr_linenumber" name="L330" href="#L330">330</a>                     writer.write(LINE_SEP);
+<a class="jxr_linenumber" name="L331" href="#L331">331</a>                     writer.write(getLicenseHeader(document));
+<a class="jxr_linenumber" name="L332" href="#L332">332</a>                     writer.write(LINE_SEP);
+<a class="jxr_linenumber" name="L333" href="#L333">333</a>                 } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (expectsPhpPI &amp;&amp; line.startsWith(<span class="jxr_string">"&lt;?php"</span>)) {
+<a class="jxr_linenumber" name="L334" href="#L334">334</a>                     written = <strong class="jxr_keyword">true</strong>;
+<a class="jxr_linenumber" name="L335" href="#L335">335</a>                     writer.write(LINE_SEP);
+<a class="jxr_linenumber" name="L336" href="#L336">336</a>                     writer.write(getLicenseHeader(document));
+<a class="jxr_linenumber" name="L337" href="#L337">337</a>                     writer.write(LINE_SEP);
+<a class="jxr_linenumber" name="L338" href="#L338">338</a>                 }
+<a class="jxr_linenumber" name="L339" href="#L339">339</a>                 first = false;
+<a class="jxr_linenumber" name="L340" href="#L340">340</a>             }
+<a class="jxr_linenumber" name="L341" href="#L341">341</a>         } <strong class="jxr_keyword">finally</strong> {
+<a class="jxr_linenumber" name="L342" href="#L342">342</a>             IOUtils.closeQuietly(br);
+<a class="jxr_linenumber" name="L343" href="#L343">343</a>             IOUtils.closeQuietly(fis);
+<a class="jxr_linenumber" name="L344" href="#L344">344</a>             IOUtils.closeQuietly(writer);
+<a class="jxr_linenumber" name="L345" href="#L345">345</a>         }
+<a class="jxr_linenumber" name="L346" href="#L346">346</a>         <strong class="jxr_keyword">return</strong> written;
+<a class="jxr_linenumber" name="L347" href="#L347">347</a>     }
+<a class="jxr_linenumber" name="L348" href="#L348">348</a> 
+<a class="jxr_linenumber" name="L349" href="#L349">349</a>     <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L350" href="#L350">350</a> <em class="jxr_javadoccomment">     * Check first line for specified text and process.</em>
+<a class="jxr_linenumber" name="L351" href="#L351">351</a> <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="L352" href="#L352">352</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> doFirstLine(File document, Writer writer, String line, String lookfor) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="L353" href="#L353">353</a>         <strong class="jxr_keyword">if</strong> (line.startsWith(lookfor)) {
+<a class="jxr_linenumber" name="L354" href="#L354">354</a>             writer.write(line);
+<a class="jxr_linenumber" name="L355" href="#L355">355</a>             writer.write(LINE_SEP);
+<a class="jxr_linenumber" name="L356" href="#L356">356</a>             writer.write(getLicenseHeader(document));
+<a class="jxr_linenumber" name="L357" href="#L357">357</a>         } <strong class="jxr_keyword">else</strong> {
+<a class="jxr_linenumber" name="L358" href="#L358">358</a>             writer.write(getLicenseHeader(document));
+<a class="jxr_linenumber" name="L359" href="#L359">359</a>             writer.write(line);
+<a class="jxr_linenumber" name="L360" href="#L360">360</a>             writer.write(LINE_SEP);
+<a class="jxr_linenumber" name="L361" href="#L361">361</a>         }
+<a class="jxr_linenumber" name="L362" href="#L362">362</a>     }
+<a class="jxr_linenumber" name="L363" href="#L363">363</a> 
+<a class="jxr_linenumber" name="L364" href="#L364">364</a>     <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L365" href="#L365">365</a> <em class="jxr_javadoccomment">     * Detect the type of document.</em>
+<a class="jxr_linenumber" name="L366" href="#L366">366</a> <em class="jxr_javadoccomment">     *</em>
+<a class="jxr_linenumber" name="L367" href="#L367">367</a> <em class="jxr_javadoccomment">     * @param document to retrieve type from.</em>
+<a class="jxr_linenumber" name="L368" href="#L368">368</a> <em class="jxr_javadoccomment">     * @return not null</em>
+<a class="jxr_linenumber" name="L369" href="#L369">369</a> <em class="jxr_javadoccomment">     * TODO use existing mechanism to detect the type of a file and record it in the report output, thus we will not need this duplication here.</em>
+<a class="jxr_linenumber" name="L370" href="#L370">370</a> <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="L371" href="#L371">371</a>     <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">int</strong> getType(File document) {
+<a class="jxr_linenumber" name="L372" href="#L372">372</a>         String path = document.getPath();
+<a class="jxr_linenumber" name="L373" href="#L373">373</a>         <strong class="jxr_keyword">int</strong> lastDot = path.lastIndexOf(DOT);
+<a class="jxr_linenumber" name="L374" href="#L374">374</a>         <strong class="jxr_keyword">if</strong> (lastDot &gt;= 0 &amp;&amp; lastDot &lt; path.length() - 1) {
+<a class="jxr_linenumber" name="L375" href="#L375">375</a>             String ext = path.substring(lastDot + 1);
+<a class="jxr_linenumber" name="L376" href="#L376">376</a>             Integer type = EXT2TYPE.get(ext);
+<a class="jxr_linenumber" name="L377" href="#L377">377</a>             <strong class="jxr_keyword">if</strong> (type != <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="L378" href="#L378">378</a>                 <strong class="jxr_keyword">return</strong> type;
+<a class="jxr_linenumber" name="L379" href="#L379">379</a>             }
+<a class="jxr_linenumber" name="L380" href="#L380">380</a>         }
+<a class="jxr_linenumber" name="L381" href="#L381">381</a>         <strong class="jxr_keyword">return</strong> TYPE_UNKNOWN;
+<a class="jxr_linenumber" name="L382" href="#L382">382</a>     }
+<a class="jxr_linenumber" name="L383" href="#L383">383</a> 
+<a class="jxr_linenumber" name="L384" href="#L384">384</a>     <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L385" href="#L385">385</a> <em class="jxr_javadoccomment">     * Set the force flag on this appender. If this flag is set</em>
+<a class="jxr_linenumber" name="L386" href="#L386">386</a> <em class="jxr_javadoccomment">     * to true then files will be modified directly, otherwise</em>
+<a class="jxr_linenumber" name="L387" href="#L387">387</a> <em class="jxr_javadoccomment">     * new files will be created alongside the existing files.</em>
+<a class="jxr_linenumber" name="L388" href="#L388">388</a> <em class="jxr_javadoccomment">     *</em>
+<a class="jxr_linenumber" name="L389" href="#L389">389</a> <em class="jxr_javadoccomment">     * @param force force flag.</em>
 <a class="jxr_linenumber" name="L390" href="#L390">390</a> <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="L391" href="#L391">391</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">abstract</strong> String getLicenseHeader(File document);
-<a class="jxr_linenumber" name="L392" href="#L392">392</a> 
-<a class="jxr_linenumber" name="L393" href="#L393">393</a>     <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L394" href="#L394">394</a> <em class="jxr_javadoccomment">     * Get the first line of the license header formatted</em>
-<a class="jxr_linenumber" name="L395" href="#L395">395</a> <em class="jxr_javadoccomment">     * for the given type of file.</em>
-<a class="jxr_linenumber" name="L396" href="#L396">396</a> <em class="jxr_javadoccomment">     *</em>
-<a class="jxr_linenumber" name="L397" href="#L397">397</a> <em class="jxr_javadoccomment">     * @param type the type of file, see the TYPE_* constants</em>
-<a class="jxr_linenumber" name="L398" href="#L398">398</a> <em class="jxr_javadoccomment">     * @return not null</em>
-<a class="jxr_linenumber" name="L399" href="#L399">399</a> <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="L400" href="#L400">400</a>     <strong class="jxr_keyword">protected</strong> String getFirstLine(<strong class="jxr_keyword">int</strong> type) {
-<a class="jxr_linenumber" name="L401" href="#L401">401</a>         <strong class="jxr_keyword">if</strong> (isFamilyC(type)) {
-<a class="jxr_linenumber" name="L402" href="#L402">402</a>             <strong class="jxr_keyword">return</strong> <span class="jxr_string">"/*"</span> + LINE_SEP;
-<a class="jxr_linenumber" name="L403" href="#L403">403</a>         } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (isFamilySGML(type)) {
-<a class="jxr_linenumber" name="L404" href="#L404">404</a>             <strong class="jxr_keyword">return</strong> <span class="jxr_string">"&lt;!--"</span> + LINE_SEP;
-<a class="jxr_linenumber" name="L405" href="#L405">405</a>         }
-<a class="jxr_linenumber" name="L406" href="#L406">406</a>         <strong class="jxr_keyword">return</strong> <span class="jxr_string">""</span>;
-<a class="jxr_linenumber" name="L407" href="#L407">407</a>     }
-<a class="jxr_linenumber" name="L408" href="#L408">408</a> 
-<a class="jxr_linenumber" name="L409" href="#L409">409</a> 
-<a class="jxr_linenumber" name="L410" href="#L410">410</a>     <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L411" href="#L411">411</a> <em class="jxr_javadoccomment">     * Get the last line of the license header formatted</em>
-<a class="jxr_linenumber" name="L412" href="#L412">412</a> <em class="jxr_javadoccomment">     * for the given type of file.</em>
-<a class="jxr_linenumber" name="L413" href="#L413">413</a> <em class="jxr_javadoccomment">     *</em>
-<a class="jxr_linenumber" name="L414" href="#L414">414</a> <em class="jxr_javadoccomment">     * @param type the type of file, see the TYPE_* constants</em>
-<a class="jxr_linenumber" name="L415" href="#L415">415</a> <em class="jxr_javadoccomment">     * @return not null</em>
-<a class="jxr_linenumber" name="L416" href="#L416">416</a> <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="L417" href="#L417">417</a>     <strong class="jxr_keyword">protected</strong> String getLastLine(<strong class="jxr_keyword">int</strong> type) {
-<a class="jxr_linenumber" name="L418" href="#L418">418</a>         <strong class="jxr_keyword">if</strong> (isFamilyC(type)) {
-<a class="jxr_linenumber" name="L419" href="#L419">419</a>             <strong class="jxr_keyword">return</strong> <span class="jxr_string">" */"</span> + LINE_SEP;
-<a class="jxr_linenumber" name="L420" href="#L420">420</a>         } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (isFamilySGML(type)) {
-<a class="jxr_linenumber" name="L421" href="#L421">421</a>             <strong class="jxr_keyword">return</strong> <span class="jxr_string">"--&gt;"</span> + LINE_SEP;
-<a class="jxr_linenumber" name="L422" href="#L422">422</a>         }
-<a class="jxr_linenumber" name="L423" href="#L423">423</a>         <strong class="jxr_keyword">return</strong> <span class="jxr_string">""</span>;
-<a class="jxr_linenumber" name="L424" href="#L424">424</a>     }
-<a class="jxr_linenumber" name="L425" href="#L425">425</a> 
-<a class="jxr_linenumber" name="L426" href="#L426">426</a> 
-<a class="jxr_linenumber" name="L427" href="#L427">427</a>     <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L428" href="#L428">428</a> <em class="jxr_javadoccomment">     * Get a line of the license header formatted</em>
-<a class="jxr_linenumber" name="L429" href="#L429">429</a> <em class="jxr_javadoccomment">     * for the given type of file.</em>
-<a class="jxr_linenumber" name="L430" href="#L430">430</a> <em class="jxr_javadoccomment">     *</em>
-<a class="jxr_linenumber" name="L431" href="#L431">431</a> <em class="jxr_javadoccomment">     * @param type    the type of file, see the TYPE_* constants</em>
-<a class="jxr_linenumber" name="L432" href="#L432">432</a> <em class="jxr_javadoccomment">     * @param content the content for this line</em>
-<a class="jxr_linenumber" name="L433" href="#L433">433</a> <em class="jxr_javadoccomment">     * @return not null</em>
-<a class="jxr_linenumber" name="L434" href="#L434">434</a> <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="L435" href="#L435">435</a>     <strong class="jxr_keyword">protected</strong> String getLine(<strong class="jxr_keyword">int</strong> type, String content) {
-<a class="jxr_linenumber" name="L436" href="#L436">436</a>         <strong class="jxr_keyword">if</strong> (isFamilyC(type)) {
-<a class="jxr_linenumber" name="L437" href="#L437">437</a>             <strong class="jxr_keyword">return</strong> <span class="jxr_string">" * "</span> + content + LINE_SEP;
-<a class="jxr_linenumber" name="L438" href="#L438">438</a>         } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (isFamilySGML(type)) {
-<a class="jxr_linenumber" name="L439" href="#L439">439</a>             <strong class="jxr_keyword">return</strong> content + LINE_SEP;
-<a class="jxr_linenumber" name="L440" href="#L440">440</a>         } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (isFamilyAPT(type)) {
-<a class="jxr_linenumber" name="L441" href="#L441">441</a>             <strong class="jxr_keyword">return</strong> <span class="jxr_string">"~~ "</span> + content + LINE_SEP;
-<a class="jxr_linenumber" name="L442" href="#L442">442</a>         } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (isFamilySH(type)) {
-<a class="jxr_linenumber" name="L443" href="#L443">443</a>             <strong class="jxr_keyword">return</strong> <span class="jxr_string">"# "</span> + content + LINE_SEP;
-<a class="jxr_linenumber" name="L444" href="#L444">444</a>         } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (isFamilyBAT(type)) {
-<a class="jxr_linenumber" name="L445" href="#L445">445</a>             <strong class="jxr_keyword">return</strong> <span class="jxr_string">"rem "</span> + content + LINE_SEP;
-<a class="jxr_linenumber" name="L446" href="#L446">446</a>         } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (isFamilyVelocity(type)) {
-<a class="jxr_linenumber" name="L447" href="#L447">447</a>             <strong class="jxr_keyword">return</strong> <span class="jxr_string">"## "</span> + content + LINE_SEP;
-<a class="jxr_linenumber" name="L448" href="#L448">448</a>         }
-<a class="jxr_linenumber" name="L449" href="#L449">449</a>         <strong class="jxr_keyword">return</strong> <span class="jxr_string">""</span>;
-<a class="jxr_linenumber" name="L450" href="#L450">450</a>     }
-<a class="jxr_linenumber" name="L451" href="#L451">451</a> 
-<a class="jxr_linenumber" name="L452" href="#L452">452</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">boolean</strong> isFamilyC(<strong class="jxr_keyword">int</strong> type) {
-<a class="jxr_linenumber" name="L453" href="#L453">453</a>         <strong class="jxr_keyword">return</strong> isIn(FAMILY_C, type);
-<a class="jxr_linenumber" name="L454" href="#L454">454</a>     }
-<a class="jxr_linenumber" name="L455" href="#L455">455</a> 
-<a class="jxr_linenumber" name="L456" href="#L456">456</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">boolean</strong> isFamilySGML(<strong class="jxr_keyword">int</strong> type) {
-<a class="jxr_linenumber" name="L457" href="#L457">457</a>         <strong class="jxr_keyword">return</strong> isIn(FAMILY_SGML, type);
+<a class="jxr_linenumber" name="L391" href="#L391">391</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setForce(<strong class="jxr_keyword">boolean</strong> force) {
+<a class="jxr_linenumber" name="L392" href="#L392">392</a>         isForced = force;
+<a class="jxr_linenumber" name="L393" href="#L393">393</a>     }
+<a class="jxr_linenumber" name="L394" href="#L394">394</a> 
+<a class="jxr_linenumber" name="L395" href="#L395">395</a>     <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L396" href="#L396">396</a> <em class="jxr_javadoccomment">     * @param document document to extract from.</em>
+<a class="jxr_linenumber" name="L397" href="#L397">397</a> <em class="jxr_javadoccomment">     * @return Get the license header of a document.</em>
+<a class="jxr_linenumber" name="L398" href="#L398">398</a> <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="L399" href="#L399">399</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">abstract</strong> String getLicenseHeader(File document);
+<a class="jxr_linenumber" name="L400" href="#L400">400</a> 
+<a class="jxr_linenumber" name="L401" href="#L401">401</a>     <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L402" href="#L402">402</a> <em class="jxr_javadoccomment">     * Get the first line of the license header formatted</em>
+<a class="jxr_linenumber" name="L403" href="#L403">403</a> <em class="jxr_javadoccomment">     * for the given type of file.</em>
+<a class="jxr_linenumber" name="L404" href="#L404">404</a> <em class="jxr_javadoccomment">     *</em>
+<a class="jxr_linenumber" name="L405" href="#L405">405</a> <em class="jxr_javadoccomment">     * @param type the type of file, see the TYPE_* constants</em>
+<a class="jxr_linenumber" name="L406" href="#L406">406</a> <em class="jxr_javadoccomment">     * @return not null</em>
+<a class="jxr_linenumber" name="L407" href="#L407">407</a> <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="L408" href="#L408">408</a>     <strong class="jxr_keyword">protected</strong> String getFirstLine(<strong class="jxr_keyword">int</strong> type) {
+<a class="jxr_linenumber" name="L409" href="#L409">409</a>         <strong class="jxr_keyword">if</strong> (isFamilyC(type)) {
+<a class="jxr_linenumber" name="L410" href="#L410">410</a>             <strong class="jxr_keyword">return</strong> <span class="jxr_string">"/*"</span> + LINE_SEP;
+<a class="jxr_linenumber" name="L411" href="#L411">411</a>         } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (isFamilySGML(type)) {
+<a class="jxr_linenumber" name="L412" href="#L412">412</a>             <strong class="jxr_keyword">return</strong> <span class="jxr_string">"&lt;!--"</span> + LINE_SEP;
+<a class="jxr_linenumber" name="L413" href="#L413">413</a>         }
+<a class="jxr_linenumber" name="L414" href="#L414">414</a>         <strong class="jxr_keyword">return</strong> <span class="jxr_string">""</span>;
+<a class="jxr_linenumber" name="L415" href="#L415">415</a>     }
+<a class="jxr_linenumber" name="L416" href="#L416">416</a> 
+<a class="jxr_linenumber" name="L417" href="#L417">417</a> 
+<a class="jxr_linenumber" name="L418" href="#L418">418</a>     <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L419" href="#L419">419</a> <em class="jxr_javadoccomment">     * Get the last line of the license header formatted</em>
+<a class="jxr_linenumber" name="L420" href="#L420">420</a> <em class="jxr_javadoccomment">     * for the given type of file.</em>
+<a class="jxr_linenumber" name="L421" href="#L421">421</a> <em class="jxr_javadoccomment">     *</em>
+<a class="jxr_linenumber" name="L422" href="#L422">422</a> <em class="jxr_javadoccomment">     * @param type the type of file, see the TYPE_* constants</em>
+<a class="jxr_linenumber" name="L423" href="#L423">423</a> <em class="jxr_javadoccomment">     * @return not null</em>
+<a class="jxr_linenumber" name="L424" href="#L424">424</a> <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="L425" href="#L425">425</a>     <strong class="jxr_keyword">protected</strong> String getLastLine(<strong class="jxr_keyword">int</strong> type) {
+<a class="jxr_linenumber" name="L426" href="#L426">426</a>         <strong class="jxr_keyword">if</strong> (isFamilyC(type)) {
+<a class="jxr_linenumber" name="L427" href="#L427">427</a>             <strong class="jxr_keyword">return</strong> <span class="jxr_string">" */"</span> + LINE_SEP;
+<a class="jxr_linenumber" name="L428" href="#L428">428</a>         } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (isFamilySGML(type)) {
+<a class="jxr_linenumber" name="L429" href="#L429">429</a>             <strong class="jxr_keyword">return</strong> <span class="jxr_string">"--&gt;"</span> + LINE_SEP;
+<a class="jxr_linenumber" name="L430" href="#L430">430</a>         }
+<a class="jxr_linenumber" name="L431" href="#L431">431</a>         <strong class="jxr_keyword">return</strong> <span class="jxr_string">""</span>;
+<a class="jxr_linenumber" name="L432" href="#L432">432</a>     }
+<a class="jxr_linenumber" name="L433" href="#L433">433</a> 
+<a class="jxr_linenumber" name="L434" href="#L434">434</a> 
+<a class="jxr_linenumber" name="L435" href="#L435">435</a>     <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L436" href="#L436">436</a> <em class="jxr_javadoccomment">     * Get a line of the license header formatted</em>
+<a class="jxr_linenumber" name="L437" href="#L437">437</a> <em class="jxr_javadoccomment">     * for the given type of file.</em>
+<a class="jxr_linenumber" name="L438" href="#L438">438</a> <em class="jxr_javadoccomment">     *</em>
+<a class="jxr_linenumber" name="L439" href="#L439">439</a> <em class="jxr_javadoccomment">     * @param type    the type of file, see the TYPE_* constants</em>
+<a class="jxr_linenumber" name="L440" href="#L440">440</a> <em class="jxr_javadoccomment">     * @param content the content for this line</em>
+<a class="jxr_linenumber" name="L441" href="#L441">441</a> <em class="jxr_javadoccomment">     * @return not null</em>
+<a class="jxr_linenumber" name="L442" href="#L442">442</a> <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="L443" href="#L443">443</a>     <strong class="jxr_keyword">protected</strong> String getLine(<strong class="jxr_keyword">int</strong> type, String content) {
+<a class="jxr_linenumber" name="L444" href="#L444">444</a>         <strong class="jxr_keyword">if</strong> (isFamilyC(type)) {
+<a class="jxr_linenumber" name="L445" href="#L445">445</a>             <strong class="jxr_keyword">return</strong> <span class="jxr_string">" * "</span> + content + LINE_SEP;
+<a class="jxr_linenumber" name="L446" href="#L446">446</a>         } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (isFamilySGML(type)) {
+<a class="jxr_linenumber" name="L447" href="#L447">447</a>             <strong class="jxr_keyword">return</strong> content + LINE_SEP;
+<a class="jxr_linenumber" name="L448" href="#L448">448</a>         } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (isFamilyAPT(type)) {
+<a class="jxr_linenumber" name="L449" href="#L449">449</a>             <strong class="jxr_keyword">return</strong> <span class="jxr_string">"~~ "</span> + content + LINE_SEP;
+<a class="jxr_linenumber" name="L450" href="#L450">450</a>         } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (isFamilySH(type)) {
+<a class="jxr_linenumber" name="L451" href="#L451">451</a>             <strong class="jxr_keyword">return</strong> <span class="jxr_string">"# "</span> + content + LINE_SEP;
+<a class="jxr_linenumber" name="L452" href="#L452">452</a>         } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (isFamilyBAT(type)) {
+<a class="jxr_linenumber" name="L453" href="#L453">453</a>             <strong class="jxr_keyword">return</strong> <span class="jxr_string">"rem "</span> + content + LINE_SEP;
+<a class="jxr_linenumber" name="L454" href="#L454">454</a>         } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (isFamilyVelocity(type)) {
+<a class="jxr_linenumber" name="L455" href="#L455">455</a>             <strong class="jxr_keyword">return</strong> <span class="jxr_string">"## "</span> + content + LINE_SEP;
+<a class="jxr_linenumber" name="L456" href="#L456">456</a>         }
+<a class="jxr_linenumber" name="L457" href="#L457">457</a>         <strong class="jxr_keyword">return</strong> <span class="jxr_string">""</span>;
 <a class="jxr_linenumber" name="L458" href="#L458">458</a>     }
 <a class="jxr_linenumber" name="L459" href="#L459">459</a> 
-<a class="jxr_linenumber" name="L460" href="#L460">460</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">boolean</strong> isFamilySH(<strong class="jxr_keyword">int</strong> type) {
-<a class="jxr_linenumber" name="L461" href="#L461">461</a>         <strong class="jxr_keyword">return</strong> isIn(FAMILY_SH, type);
+<a class="jxr_linenumber" name="L460" href="#L460">460</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">boolean</strong> isFamilyC(<strong class="jxr_keyword">int</strong> type) {
+<a class="jxr_linenumber" name="L461" href="#L461">461</a>         <strong class="jxr_keyword">return</strong> isIn(FAMILY_C, type);
 <a class="jxr_linenumber" name="L462" href="#L462">462</a>     }
 <a class="jxr_linenumber" name="L463" href="#L463">463</a> 
-<a class="jxr_linenumber" name="L464" href="#L464">464</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">boolean</strong> isFamilyAPT(<strong class="jxr_keyword">int</strong> type) {
-<a class="jxr_linenumber" name="L465" href="#L465">465</a>         <strong class="jxr_keyword">return</strong> isIn(FAMILY_APT, type);
+<a class="jxr_linenumber" name="L464" href="#L464">464</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">boolean</strong> isFamilySGML(<strong class="jxr_keyword">int</strong> type) {
+<a class="jxr_linenumber" name="L465" href="#L465">465</a>         <strong class="jxr_keyword">return</strong> isIn(FAMILY_SGML, type);
 <a class="jxr_linenumber" name="L466" href="#L466">466</a>     }
 <a class="jxr_linenumber" name="L467" href="#L467">467</a> 
-<a class="jxr_linenumber" name="L468" href="#L468">468</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">boolean</strong> isFamilyBAT(<strong class="jxr_keyword">int</strong> type) {
-<a class="jxr_linenumber" name="L469" href="#L469">469</a>         <strong class="jxr_keyword">return</strong> isIn(FAMILY_BAT, type);
+<a class="jxr_linenumber" name="L468" href="#L468">468</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">boolean</strong> isFamilySH(<strong class="jxr_keyword">int</strong> type) {
+<a class="jxr_linenumber" name="L469" href="#L469">469</a>         <strong class="jxr_keyword">return</strong> isIn(FAMILY_SH, type);
 <a class="jxr_linenumber" name="L470" href="#L470">470</a>     }
 <a class="jxr_linenumber" name="L471" href="#L471">471</a> 
-<a class="jxr_linenumber" name="L472" href="#L472">472</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">boolean</strong> isFamilyVelocity(<strong class="jxr_keyword">int</strong> type) {
-<a class="jxr_linenumber" name="L473" href="#L473">473</a>         <strong class="jxr_keyword">return</strong> isIn(FAMILY_VELOCITY, type);
+<a class="jxr_linenumber" name="L472" href="#L472">472</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">boolean</strong> isFamilyAPT(<strong class="jxr_keyword">int</strong> type) {
+<a class="jxr_linenumber" name="L473" href="#L473">473</a>         <strong class="jxr_keyword">return</strong> isIn(FAMILY_APT, type);
 <a class="jxr_linenumber" name="L474" href="#L474">474</a>     }
 <a class="jxr_linenumber" name="L475" href="#L475">475</a> 
-<a class="jxr_linenumber" name="L476" href="#L476">476</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">boolean</strong> expectsHashPling(<strong class="jxr_keyword">int</strong> type) {
-<a class="jxr_linenumber" name="L477" href="#L477">477</a>         <strong class="jxr_keyword">return</strong> isIn(EXPECTS_HASH_PLING, type);
+<a class="jxr_linenumber" name="L476" href="#L476">476</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">boolean</strong> isFamilyBAT(<strong class="jxr_keyword">int</strong> type) {
+<a class="jxr_linenumber" name="L477" href="#L477">477</a>         <strong class="jxr_keyword">return</strong> isIn(FAMILY_BAT, type);
 <a class="jxr_linenumber" name="L478" href="#L478">478</a>     }
 <a class="jxr_linenumber" name="L479" href="#L479">479</a> 
-<a class="jxr_linenumber" name="L480" href="#L480">480</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">boolean</strong> expectsAtEcho(<strong class="jxr_keyword">int</strong> type) {
-<a class="jxr_linenumber" name="L481" href="#L481">481</a>         <strong class="jxr_keyword">return</strong> isIn(EXPECTS_AT_ECHO, type);
+<a class="jxr_linenumber" name="L480" href="#L480">480</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">boolean</strong> isFamilyVelocity(<strong class="jxr_keyword">int</strong> type) {
+<a class="jxr_linenumber" name="L481" href="#L481">481</a>         <strong class="jxr_keyword">return</strong> isIn(FAMILY_VELOCITY, type);
 <a class="jxr_linenumber" name="L482" href="#L482">482</a>     }
 <a class="jxr_linenumber" name="L483" href="#L483">483</a> 
-<a class="jxr_linenumber" name="L484" href="#L484">484</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">boolean</strong> expectsPackage(<strong class="jxr_keyword">int</strong> type) {
-<a class="jxr_linenumber" name="L485" href="#L485">485</a>         <strong class="jxr_keyword">return</strong> isIn(EXPECTS_PACKAGE, type);
+<a class="jxr_linenumber" name="L484" href="#L484">484</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">boolean</strong> expectsHashPling(<strong class="jxr_keyword">int</strong> type) {
+<a class="jxr_linenumber" name="L485" href="#L485">485</a>         <strong class="jxr_keyword">return</strong> isIn(EXPECTS_HASH_PLING, type);
 <a class="jxr_linenumber" name="L486" href="#L486">486</a>     }
 <a class="jxr_linenumber" name="L487" href="#L487">487</a> 
-<a class="jxr_linenumber" name="L488" href="#L488">488</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">boolean</strong> expectsXMLDecl(<strong class="jxr_keyword">int</strong> type) {
-<a class="jxr_linenumber" name="L489" href="#L489">489</a>         <strong class="jxr_keyword">return</strong> isIn(EXPECTS_XML_DECL, type);
+<a class="jxr_linenumber" name="L488" href="#L488">488</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">boolean</strong> expectsAtEcho(<strong class="jxr_keyword">int</strong> type) {
+<a class="jxr_linenumber" name="L489" href="#L489">489</a>         <strong class="jxr_keyword">return</strong> isIn(EXPECTS_AT_ECHO, type);
 <a class="jxr_linenumber" name="L490" href="#L490">490</a>     }
 <a class="jxr_linenumber" name="L491" href="#L491">491</a> 
-<a class="jxr_linenumber" name="L492" href="#L492">492</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">boolean</strong> expectsPhpPI(<strong class="jxr_keyword">int</strong> type) {
-<a class="jxr_linenumber" name="L493" href="#L493">493</a>         <strong class="jxr_keyword">return</strong> isIn(EXPECTS_PHP_PI, type);
+<a class="jxr_linenumber" name="L492" href="#L492">492</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">boolean</strong> expectsPackage(<strong class="jxr_keyword">int</strong> type) {
+<a class="jxr_linenumber" name="L493" href="#L493">493</a>         <strong class="jxr_keyword">return</strong> isIn(EXPECTS_PACKAGE, type);
 <a class="jxr_linenumber" name="L494" href="#L494">494</a>     }
 <a class="jxr_linenumber" name="L495" href="#L495">495</a> 
-<a class="jxr_linenumber" name="L496" href="#L496">496</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">boolean</strong> expectsMSVisualStudioSolutionFileHeader(<strong class="jxr_keyword">int</strong> type) {
-<a class="jxr_linenumber" name="L497" href="#L497">497</a>         <strong class="jxr_keyword">return</strong> isIn(EXPECTS_MSVSSF_HEADER, type);
+<a class="jxr_linenumber" name="L496" href="#L496">496</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">boolean</strong> expectsXMLDecl(<strong class="jxr_keyword">int</strong> type) {
+<a class="jxr_linenumber" name="L497" href="#L497">497</a>         <strong class="jxr_keyword">return</strong> isIn(EXPECTS_XML_DECL, type);
 <a class="jxr_linenumber" name="L498" href="#L498">498</a>     }
 <a class="jxr_linenumber" name="L499" href="#L499">499</a> 
-<a class="jxr_linenumber" name="L500" href="#L500">500</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">boolean</strong> isIn(<strong class="jxr_keyword">int</strong>[] arr, <strong class="jxr_keyword">int</strong> key) {
-<a class="jxr_linenumber" name="L501" href="#L501">501</a>         <strong class="jxr_keyword">return</strong> Arrays.binarySearch(arr, key) &gt;= 0;
+<a class="jxr_linenumber" name="L500" href="#L500">500</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">boolean</strong> expectsPhpPI(<strong class="jxr_keyword">int</strong> type) {
+<a class="jxr_linenumber" name="L501" href="#L501">501</a>         <strong class="jxr_keyword">return</strong> isIn(EXPECTS_PHP_PI, type);
 <a class="jxr_linenumber" name="L502" href="#L502">502</a>     }
 <a class="jxr_linenumber" name="L503" href="#L503">503</a> 
-<a class="jxr_linenumber" name="L504" href="#L504">504</a>     <strong class="jxr_keyword">private</strong> String passThroughReadNext(Writer writer, String line,
-<a class="jxr_linenumber" name="L505" href="#L505">505</a>                                        BufferedReader br) <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="L506" href="#L506">506</a>         writer.write(line);
-<a class="jxr_linenumber" name="L507" href="#L507">507</a>         writer.write(LINE_SEP);
-<a class="jxr_linenumber" name="L508" href="#L508">508</a>         String l = br.readLine();
-<a class="jxr_linenumber" name="L509" href="#L509">509</a>         <strong class="jxr_keyword">return</strong> l == <strong class="jxr_keyword">null</strong> ? <span class="jxr_string">""</span> : l;
+<a class="jxr_linenumber" name="L504" href="#L504">504</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">boolean</strong> expectsMSVisualStudioSolutionFileHeader(<strong class="jxr_keyword">int</strong> type) {
+<a class="jxr_linenumber" name="L505" href="#L505">505</a>         <strong class="jxr_keyword">return</strong> isIn(EXPECTS_MSVSSF_HEADER, type);
+<a class="jxr_linenumber" name="L506" href="#L506">506</a>     }
+<a class="jxr_linenumber" name="L507" href="#L507">507</a> 
+<a class="jxr_linenumber" name="L508" href="#L508">508</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">boolean</strong> isIn(<strong class="jxr_keyword">int</strong>[] arr, <strong class="jxr_keyword">int</strong> key) {
+<a class="jxr_linenumber" name="L509" href="#L509">509</a>         <strong class="jxr_keyword">return</strong> Arrays.binarySearch(arr, key) &gt;= 0;
 <a class="jxr_linenumber" name="L510" href="#L510">510</a>     }
-<a class="jxr_linenumber" name="L511" href="#L511">511</a> }
-<a class="jxr_linenumber" name="L512" href="#L512">512</a> 
-<a class="jxr_linenumber" name="L513" href="#L513">513</a> <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L514" href="#L514">514</a> <em class="jxr_javadoccomment"> * Stripped down version of Commons IO 2.0's BOMInputStream.</em>
-<a class="jxr_linenumber" name="L515" href="#L515">515</a> <em class="jxr_javadoccomment"> */</em>
-<a class="jxr_linenumber" name="L516" href="#L516">516</a> <strong class="jxr_keyword">class</strong> <a name="BOMInputStream" href="../../../../org/apache/rat/annotation/AbstractLicenseAppender.html#BOMInputStream">BOMInputStream</a> <strong class="jxr_keyword">extends</strong> FilterInputStream {
-<a class="jxr_linenumber" name="L517" href="#L517">517</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">int</strong>[] firstBytes;
-<a class="jxr_linenumber" name="L518" href="#L518">518</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">int</strong> fbLength, fbIndex, markFbIndex;
-<a class="jxr_linenumber" name="L519" href="#L519">519</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> markedAtStart;
-<a class="jxr_linenumber" name="L520" href="#L520">520</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong>[][] BOMS = {
-<a class="jxr_linenumber" name="L521" href="#L521">521</a>             <strong class="jxr_keyword">new</strong> <strong class="jxr_keyword">int</strong>[]{0xEF, 0xBB, 0xBF}, <em class="jxr_comment">// UTF-8</em>
-<a class="jxr_linenumber" name="L522" href="#L522">522</a>             <strong class="jxr_keyword">new</strong> <strong class="jxr_keyword">int</strong>[]{0xFE, 0xFF}, <em class="jxr_comment">// UTF-16BE</em>
-<a class="jxr_linenumber" name="L523" href="#L523">523</a>             <strong class="jxr_keyword">new</strong> <strong class="jxr_keyword">int</strong>[]{0xFF, 0xFE}, <em class="jxr_comment">// UTF-16LE</em>
-<a class="jxr_linenumber" name="L524" href="#L524">524</a>     };
-<a class="jxr_linenumber" name="L525" href="#L525">525</a> 
-<a class="jxr_linenumber" name="L526" href="#L526">526</a>     <a name="BOMInputStream" href="../../../../org/apache/rat/annotation/AbstractLicenseAppender.html#BOMInputStream">BOMInputStream</a>(InputStream s) {
-<a class="jxr_linenumber" name="L527" href="#L527">527</a>         <strong class="jxr_keyword">super</strong>(s);
-<a class="jxr_linenumber" name="L528" href="#L528">528</a>     }
-<a class="jxr_linenumber" name="L529" href="#L529">529</a> 
-<a class="jxr_linenumber" name="L530" href="#L530">530</a>     @Override
-<a class="jxr_linenumber" name="L531" href="#L531">531</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">int</strong> read() <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="L532" href="#L532">532</a>         <strong class="jxr_keyword">int</strong> b = readFirstBytes();
-<a class="jxr_linenumber" name="L533" href="#L533">533</a>         <strong class="jxr_keyword">return</strong> (b &gt;= 0) ? b : in.read();
-<a class="jxr_linenumber" name="L534" href="#L534">534</a>     }
-<a class="jxr_linenumber" name="L535" href="#L535">535</a> 
-<a class="jxr_linenumber" name="L536" href="#L536">536</a>     @Override
-<a class="jxr_linenumber" name="L537" href="#L537">537</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">int</strong> read(byte[] buf, <strong class="jxr_keyword">int</strong> off, <strong class="jxr_keyword">int</strong> len) <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="L538" href="#L538">538</a>         <strong class="jxr_keyword">int</strong> firstCount = 0;
-<a class="jxr_linenumber" name="L539" href="#L539">539</a>         <strong class="jxr_keyword">int</strong> b = 0;
-<a class="jxr_linenumber" name="L540" href="#L540">540</a>         <strong class="jxr_keyword">while</strong> ((len &gt; 0) &amp;&amp; (b &gt;= 0)) {
-<a class="jxr_linenumber" name="L541" href="#L541">541</a>             b = readFirstBytes();
-<a class="jxr_linenumber" name="L542" href="#L542">542</a>             <strong class="jxr_keyword">if</strong> (b &gt;= 0) {
-<a class="jxr_linenumber" name="L543" href="#L543">543</a>                 buf[off++] = (byte) (b &amp; 0xFF);
-<a class="jxr_linenumber" name="L544" href="#L544">544</a>                 len--;
-<a class="jxr_linenumber" name="L545" href="#L545">545</a>                 firstCount++;
-<a class="jxr_linenumber" name="L546" href="#L546">546</a>             }
-<a class="jxr_linenumber" name="L547" href="#L547">547</a>         }
-<a class="jxr_linenumber" name="L548" href="#L548">548</a>         <strong class="jxr_keyword">int</strong> secondCount = in.read(buf, off, len);
-<a class="jxr_linenumber" name="L549" href="#L549">549</a>         <strong class="jxr_keyword">return</strong> (secondCount &lt; 0)
-<a class="jxr_linenumber" name="L550" href="#L550">550</a>                 ? (firstCount &gt; 0 ? firstCount : -1) : firstCount + secondCount;
-<a class="jxr_linenumber" name="L551" href="#L551">551</a>     }
-<a class="jxr_linenumber" name="L552" href="#L552">552</a> 
-<a class="jxr_linenumber" name="L553" href="#L553">553</a>     @Override
-<a class="jxr_linenumber" name="L554" href="#L554">554</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">int</strong> read(byte[] buf) <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="L555" href="#L555">555</a>         <strong class="jxr_keyword">return</strong> read(buf, 0, buf.length);
-<a class="jxr_linenumber" name="L556" href="#L556">556</a>     }
-<a class="jxr_linenumber" name="L557" href="#L557">557</a> 
-<a class="jxr_linenumber" name="L558" href="#L558">558</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">int</strong> readFirstBytes() <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="L559" href="#L559">559</a>         getBOM();
-<a class="jxr_linenumber" name="L560" href="#L560">560</a>         <strong class="jxr_keyword">return</strong> (fbIndex &lt; fbLength) ? firstBytes[fbIndex++] : -1;
-<a class="jxr_linenumber" name="L561" href="#L561">561</a>     }
-<a class="jxr_linenumber" name="L562" href="#L562">562</a> 
-<a class="jxr_linenumber" name="L563" href="#L563">563</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> getBOM() <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="L564" href="#L564">564</a>         <strong class="jxr_keyword">if</strong> (firstBytes == <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="L565" href="#L565">565</a>             <strong class="jxr_keyword">int</strong> max = 0;
-<a class="jxr_linenumber" name="L566" href="#L566">566</a>             <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong>[] BOM : BOMS) {
-<a class="jxr_linenumber" name="L567" href="#L567">567</a>                 max = Math.max(max, BOM.length);
-<a class="jxr_linenumber" name="L568" href="#L568">568</a>             }
-<a class="jxr_linenumber" name="L569" href="#L569">569</a>             firstBytes = <strong class="jxr_keyword">new</strong> <strong class="jxr_keyword">int</strong>[max];
-<a class="jxr_linenumber" name="L570" href="#L570">570</a>             <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; firstBytes.length; i++) {
-<a class="jxr_linenumber" name="L571" href="#L571">571</a>                 firstBytes[i] = in.read();
-<a class="jxr_linenumber" name="L572" href="#L572">572</a>                 fbLength++;
-<a class="jxr_linenumber" name="L573" href="#L573">573</a>                 <strong class="jxr_keyword">if</strong> (firstBytes[i] &lt; 0) {
-<a class="jxr_linenumber" name="L574" href="#L574">574</a>                     <strong class="jxr_keyword">break</strong>;
-<a class="jxr_linenumber" name="L575" href="#L575">575</a>                 }
-<a class="jxr_linenumber" name="L576" href="#L576">576</a> 
-<a class="jxr_linenumber" name="L577" href="#L577">577</a>                 <strong class="jxr_keyword">boolean</strong> found = find();
-<a class="jxr_linenumber" name="L578" href="#L578">578</a>                 <strong class="jxr_keyword">if</strong> (found) {
-<a class="jxr_linenumber" name="L579" href="#L579">579</a>                     fbLength = 0;
-<a class="jxr_linenumber" name="L580" href="#L580">580</a>                     <strong class="jxr_keyword">break</strong>;
-<a class="jxr_linenumber" name="L581" href="#L581">581</a>                 }
-<a class="jxr_linenumber" name="L582" href="#L582">582</a>             }
-<a class="jxr_linenumber" name="L583" href="#L583">583</a>         }
-<a class="jxr_linenumber" name="L584" href="#L584">584</a>     }
-<a class="jxr_linenumber" name="L585" href="#L585">585</a> 
-<a class="jxr_linenumber" name="L586" href="#L586">586</a>     @Override
-<a class="jxr_linenumber" name="L587" href="#L587">587</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">synchronized</strong> <strong class="jxr_keyword">void</strong> mark(<strong class="jxr_keyword">int</strong> readlimit) {
-<a class="jxr_linenumber" name="L588" href="#L588">588</a>         markFbIndex = fbIndex;
-<a class="jxr_linenumber" name="L589" href="#L589">589</a>         markedAtStart = (firstBytes == <strong class="jxr_keyword">null</strong>);
-<a class="jxr_linenumber" name="L590" href="#L590">590</a>         in.mark(readlimit);
-<a class="jxr_linenumber" name="L591" href="#L591">591</a>     }
-<a class="jxr_linenumber" name="L592" href="#L592">592</a> 
-<a class="jxr_linenumber" name="L593" href="#L593">593</a>     @Override
-<a class="jxr_linenumber" name="L594" href="#L594">594</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">synchronized</strong> <strong class="jxr_keyword">void</strong> reset() <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="L595" href="#L595">595</a>         fbIndex = markFbIndex;
-<a class="jxr_linenumber" name="L596" href="#L596">596</a>         <strong class="jxr_keyword">if</strong> (markedAtStart) {
-<a class="jxr_linenumber" name="L597" href="#L597">597</a>             firstBytes = <strong class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="L598" href="#L598">598</a>         }
-<a class="jxr_linenumber" name="L599" href="#L599">599</a> 
-<a class="jxr_linenumber" name="L600" href="#L600">600</a>         in.reset();
-<a class="jxr_linenumber" name="L601" href="#L601">601</a>     }
-<a class="jxr_linenumber" name="L602" href="#L602">602</a> 
-<a class="jxr_linenumber" name="L603" href="#L603">603</a>     @Override
-<a class="jxr_linenumber" name="L604" href="#L604">604</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">long</strong> skip(<strong class="jxr_keyword">long</strong> n) <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="L605" href="#L605">605</a>         <strong class="jxr_keyword">while</strong> ((n &gt; 0) &amp;&amp; (readFirstBytes() &gt;= 0)) {
-<a class="jxr_linenumber" name="L606" href="#L606">606</a>             n--;
-<a class="jxr_linenumber" name="L607" href="#L607">607</a>         }
-<a class="jxr_linenumber" name="L608" href="#L608">608</a>         <strong class="jxr_keyword">return</strong> in.skip(n);
+<a class="jxr_linenumber" name="L511" href="#L511">511</a> 
+<a class="jxr_linenumber" name="L512" href="#L512">512</a>     <strong class="jxr_keyword">private</strong> String passThroughReadNext(Writer writer, String line,
+<a class="jxr_linenumber" name="L513" href="#L513">513</a>                                        BufferedReader br) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="L514" href="#L514">514</a>         writer.write(line);
+<a class="jxr_linenumber" name="L515" href="#L515">515</a>         writer.write(LINE_SEP);
+<a class="jxr_linenumber" name="L516" href="#L516">516</a>         String l = br.readLine();
+<a class="jxr_linenumber" name="L517" href="#L517">517</a>         <strong class="jxr_keyword">return</strong> l == <strong class="jxr_keyword">null</strong> ? <span class="jxr_string">""</span> : l;
+<a class="jxr_linenumber" name="L518" href="#L518">518</a>     }
+<a class="jxr_linenumber" name="L519" href="#L519">519</a> }
+<a class="jxr_linenumber" name="L520" href="#L520">520</a> 
+<a class="jxr_linenumber" name="L521" href="#L521">521</a> <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L522" href="#L522">522</a> <em class="jxr_javadoccomment"> * Stripped down version of Commons IO 2.0's BOMInputStream.</em>
+<a class="jxr_linenumber" name="L523" href="#L523">523</a> <em class="jxr_javadoccomment"> */</em>
+<a class="jxr_linenumber" name="L524" href="#L524">524</a> <strong class="jxr_keyword">class</strong> <a name="BOMInputStream" href="../../../../org/apache/rat/annotation/AbstractLicenseAppender.html#BOMInputStream">BOMInputStream</a> <strong class="jxr_keyword">extends</strong> FilterInputStream {
+<a class="jxr_linenumber" name="L525" href="#L525">525</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">int</strong>[] firstBytes;
+<a class="jxr_linenumber" name="L526" href="#L526">526</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">int</strong> fbLength, fbIndex, markFbIndex;
+<a class="jxr_linenumber" name="L527" href="#L527">527</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> markedAtStart;
+<a class="jxr_linenumber" name="L528" href="#L528">528</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong>[][] BOMS = {
+<a class="jxr_linenumber" name="L529" href="#L529">529</a>             <strong class="jxr_keyword">new</strong> <strong class="jxr_keyword">int</strong>[]{0xEF, 0xBB, 0xBF}, <em class="jxr_comment">// UTF-8</em>
+<a class="jxr_linenumber" name="L530" href="#L530">530</a>             <strong class="jxr_keyword">new</strong> <strong class="jxr_keyword">int</strong>[]{0xFE, 0xFF}, <em class="jxr_comment">// UTF-16BE</em>
+<a class="jxr_linenumber" name="L531" href="#L531">531</a>             <strong class="jxr_keyword">new</strong> <strong class="jxr_keyword">int</strong>[]{0xFF, 0xFE}, <em class="jxr_comment">// UTF-16LE</em>
+<a class="jxr_linenumber" name="L532" href="#L532">532</a>     };
+<a class="jxr_linenumber" name="L533" href="#L533">533</a> 
+<a class="jxr_linenumber" name="L534" href="#L534">534</a>     <a name="BOMInputStream" href="../../../../org/apache/rat/annotation/AbstractLicenseAppender.html#BOMInputStream">BOMInputStream</a>(InputStream s) {
+<a class="jxr_linenumber" name="L535" href="#L535">535</a>         <strong class="jxr_keyword">super</strong>(s);
+<a class="jxr_linenumber" name="L536" href="#L536">536</a>     }
+<a class="jxr_linenumber" name="L537" href="#L537">537</a> 
+<a class="jxr_linenumber" name="L538" href="#L538">538</a>     @Override
+<a class="jxr_linenumber" name="L539" href="#L539">539</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">int</strong> read() <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="L540" href="#L540">540</a>         <strong class="jxr_keyword">int</strong> b = readFirstBytes();
+<a class="jxr_linenumber" name="L541" href="#L541">541</a>         <strong class="jxr_keyword">return</strong> (b &gt;= 0) ? b : in.read();
+<a class="jxr_linenumber" name="L542" href="#L542">542</a>     }
+<a class="jxr_linenumber" name="L543" href="#L543">543</a> 
+<a class="jxr_linenumber" name="L544" href="#L544">544</a>     @Override
+<a class="jxr_linenumber" name="L545" href="#L545">545</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">int</strong> read(byte[] buf, <strong class="jxr_keyword">int</strong> off, <strong class="jxr_keyword">int</strong> len) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="L546" href="#L546">546</a>         <strong class="jxr_keyword">int</strong> firstCount = 0;
+<a class="jxr_linenumber" name="L547" href="#L547">547</a>         <strong class="jxr_keyword">int</strong> b = 0;
+<a class="jxr_linenumber" name="L548" href="#L548">548</a>         <strong class="jxr_keyword">while</strong> ((len &gt; 0) &amp;&amp; (b &gt;= 0)) {
+<a class="jxr_linenumber" name="L549" href="#L549">549</a>             b = readFirstBytes();
+<a class="jxr_linenumber" name="L550" href="#L550">550</a>             <strong class="jxr_keyword">if</strong> (b &gt;= 0) {
+<a class="jxr_linenumber" name="L551" href="#L551">551</a>                 buf[off++] = (byte) (b &amp; 0xFF);
+<a class="jxr_linenumber" name="L552" href="#L552">552</a>                 len--;
+<a class="jxr_linenumber" name="L553" href="#L553">553</a>                 firstCount++;
+<a class="jxr_linenumber" name="L554" href="#L554">554</a>             }
+<a class="jxr_linenumber" name="L555" href="#L555">555</a>         }
+<a class="jxr_linenumber" name="L556" href="#L556">556</a>         <strong class="jxr_keyword">int</strong> secondCount = in.read(buf, off, len);
+<a class="jxr_linenumber" name="L557" href="#L557">557</a>         <strong class="jxr_keyword">return</strong> (secondCount &lt; 0)
+<a class="jxr_linenumber" name="L558" href="#L558">558</a>                 ? (firstCount &gt; 0 ? firstCount : -1) : firstCount + secondCount;
+<a class="jxr_linenumber" name="L559" href="#L559">559</a>     }
+<a class="jxr_linenumber" name="L560" href="#L560">560</a> 
+<a class="jxr_linenumber" name="L561" href="#L561">561</a>     @Override
+<a class="jxr_linenumber" name="L562" href="#L562">562</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">int</strong> read(byte[] buf) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="L563" href="#L563">563</a>         <strong class="jxr_keyword">return</strong> read(buf, 0, buf.length);
+<a class="jxr_linenumber" name="L564" href="#L564">564</a>     }
+<a class="jxr_linenumber" name="L565" href="#L565">565</a> 
+<a class="jxr_linenumber" name="L566" href="#L566">566</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">int</strong> readFirstBytes() <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="L567" href="#L567">567</a>         getBOM();
+<a class="jxr_linenumber" name="L568" href="#L568">568</a>         <strong class="jxr_keyword">return</strong> (fbIndex &lt; fbLength) ? firstBytes[fbIndex++] : -1;
+<a class="jxr_linenumber" name="L569" href="#L569">569</a>     }
+<a class="jxr_linenumber" name="L570" href="#L570">570</a> 
+<a class="jxr_linenumber" name="L571" href="#L571">571</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> getBOM() <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="L572" href="#L572">572</a>         <strong class="jxr_keyword">if</strong> (firstBytes == <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="L573" href="#L573">573</a>             <strong class="jxr_keyword">int</strong> max = 0;
+<a class="jxr_linenumber" name="L574" href="#L574">574</a>             <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong>[] BOM : BOMS) {
+<a class="jxr_linenumber" name="L575" href="#L575">575</a>                 max = Math.max(max, BOM.length);
+<a class="jxr_linenumber" name="L576" href="#L576">576</a>             }
+<a class="jxr_linenumber" name="L577" href="#L577">577</a>             firstBytes = <strong class="jxr_keyword">new</strong> <strong class="jxr_keyword">int</strong>[max];
+<a class="jxr_linenumber" name="L578" href="#L578">578</a>             <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; firstBytes.length; i++) {
+<a class="jxr_linenumber" name="L579" href="#L579">579</a>                 firstBytes[i] = in.read();
+<a class="jxr_linenumber" name="L580" href="#L580">580</a>                 fbLength++;
+<a class="jxr_linenumber" name="L581" href="#L581">581</a>                 <strong class="jxr_keyword">if</strong> (firstBytes[i] &lt; 0) {
+<a class="jxr_linenumber" name="L582" href="#L582">582</a>                     <strong class="jxr_keyword">break</strong>;
+<a class="jxr_linenumber" name="L583" href="#L583">583</a>                 }
+<a class="jxr_linenumber" name="L584" href="#L584">584</a> 
+<a class="jxr_linenumber" name="L585" href="#L585">585</a>                 <strong class="jxr_keyword">boolean</strong> found = find();
+<a class="jxr_linenumber" name="L586" href="#L586">586</a>                 <strong class="jxr_keyword">if</strong> (found) {
+<a class="jxr_linenumber" name="L587" href="#L587">587</a>                     fbLength = 0;
+<a class="jxr_linenumber" name="L588" href="#L588">588</a>                     <strong class="jxr_keyword">break</strong>;
+<a class="jxr_linenumber" name="L589" href="#L589">589</a>                 }
+<a class="jxr_linenumber" name="L590" href="#L590">590</a>             }
+<a class="jxr_linenumber" name="L591" href="#L591">591</a>         }
+<a class="jxr_linenumber" name="L592" href="#L592">592</a>     }
+<a class="jxr_linenumber" name="L593" href="#L593">593</a> 
+<a class="jxr_linenumber" name="L594" href="#L594">594</a>     @Override
+<a class="jxr_linenumber" name="L595" href="#L595">595</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">synchronized</strong> <strong class="jxr_keyword">void</strong> mark(<strong class="jxr_keyword">int</strong> readlimit) {
+<a class="jxr_linenumber" name="L596" href="#L596">596</a>         markFbIndex = fbIndex;
+<a class="jxr_linenumber" name="L597" href="#L597">597</a>         markedAtStart = (firstBytes == <strong class="jxr_keyword">null</strong>);
+<a class="jxr_linenumber" name="L598" href="#L598">598</a>         in.mark(readlimit);
+<a class="jxr_linenumber" name="L599" href="#L599">599</a>     }
+<a class="jxr_linenumber" name="L600" href="#L600">600</a> 
+<a class="jxr_linenumber" name="L601" href="#L601">601</a>     @Override
+<a class="jxr_linenumber" name="L602" href="#L602">602</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">synchronized</strong> <strong class="jxr_keyword">void</strong> reset() <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="L603" href="#L603">603</a>         fbIndex = markFbIndex;
+<a class="jxr_linenumber" name="L604" href="#L604">604</a>         <strong class="jxr_keyword">if</strong> (markedAtStart) {
+<a class="jxr_linenumber" name="L605" href="#L605">605</a>             firstBytes = <strong class="jxr_keyword">null</strong>;
+<a class="jxr_linenumber" name="L606" href="#L606">606</a>         }
+<a class="jxr_linenumber" name="L607" href="#L607">607</a> 
+<a class="jxr_linenumber" name="L608" href="#L608">608</a>         in.reset();
 <a class="jxr_linenumber" name="L609" href="#L609">609</a>     }
 <a class="jxr_linenumber" name="L610" href="#L610">610</a> 
-<a class="jxr_linenumber" name="L611" href="#L611">611</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> find() {
-<a class="jxr_linenumber" name="L612" href="#L612">612</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong>[] BOM : BOMS) {
-<a class="jxr_linenumber" name="L613" href="#L613">613</a>             <strong class="jxr_keyword">if</strong> (matches(BOM)) {
-<a class="jxr_linenumber" name="L614" href="#L614">614</a>                 <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">true</strong>;
-<a class="jxr_linenumber" name="L615" href="#L615">615</a>             }
-<a class="jxr_linenumber" name="L616" href="#L616">616</a>         }
-<a class="jxr_linenumber" name="L617" href="#L617">617</a>         <strong class="jxr_keyword">return</strong> false;
-<a class="jxr_linenumber" name="L618" href="#L618">618</a>     }
-<a class="jxr_linenumber" name="L619" href="#L619">619</a> 
-<a class="jxr_linenumber" name="L620" href="#L620">620</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> matches(<strong class="jxr_keyword">int</strong>[] bom) {
-<a class="jxr_linenumber" name="L621" href="#L621">621</a>         <strong class="jxr_keyword">if</strong> (bom.length != fbLength) {
-<a class="jxr_linenumber" name="L622" href="#L622">622</a>             <strong class="jxr_keyword">return</strong> false;
-<a class="jxr_linenumber" name="L623" href="#L623">623</a>         }
-<a class="jxr_linenumber" name="L624" href="#L624">624</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; bom.length; i++) {
-<a class="jxr_linenumber" name="L625" href="#L625">625</a>             <strong class="jxr_keyword">if</strong> (bom[i] != firstBytes[i]) {
-<a class="jxr_linenumber" name="L626" href="#L626">626</a>                 <strong class="jxr_keyword">return</strong> false;
-<a class="jxr_linenumber" name="L627" href="#L627">627</a>             }
-<a class="jxr_linenumber" name="L628" href="#L628">628</a>         }
-<a class="jxr_linenumber" name="L629" href="#L629">629</a>         <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">true</strong>;
-<a class="jxr_linenumber" name="L630" href="#L630">630</a>     }
-<a class="jxr_linenumber" name="L631" href="#L631">631</a> 
-<a class="jxr_linenumber" name="L632" href="#L632">632</a> }
+<a class="jxr_linenumber" name="L611" href="#L611">611</a>     @Override
+<a class="jxr_linenumber" name="L612" href="#L612">612</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">long</strong> skip(<strong class="jxr_keyword">long</strong> n) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="L613" href="#L613">613</a>         <strong class="jxr_keyword">while</strong> ((n &gt; 0) &amp;&amp; (readFirstBytes() &gt;= 0)) {
+<a class="jxr_linenumber" name="L614" href="#L614">614</a>             n--;
+<a class="jxr_linenumber" name="L615" href="#L615">615</a>         }
+<a class="jxr_linenumber" name="L616" href="#L616">616</a>         <strong class="jxr_keyword">return</strong> in.skip(n);
+<a class="jxr_linenumber" name="L617" href="#L617">617</a>     }
+<a class="jxr_linenumber" name="L618" href="#L618">618</a> 
+<a class="jxr_linenumber" name="L619" href="#L619">619</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> find() {
+<a class="jxr_linenumber" name="L620" href="#L620">620</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong>[] BOM : BOMS) {
+<a class="jxr_linenumber" name="L621" href="#L621">621</a>             <strong class="jxr_keyword">if</strong> (matches(BOM)) {
+<a class="jxr_linenumber" name="L622" href="#L622">622</a>                 <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">true</strong>;
+<a class="jxr_linenumber" name="L623" href="#L623">623</a>             }
+<a class="jxr_linenumber" name="L624" href="#L624">624</a>         }
+<a class="jxr_linenumber" name="L625" href="#L625">625</a>         <strong class="jxr_keyword">return</strong> false;
+<a class="jxr_linenumber" name="L626" href="#L626">626</a>     }
+<a class="jxr_linenumber" name="L627" href="#L627">627</a> 
+<a class="jxr_linenumber" name="L628" href="#L628">628</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> matches(<strong class="jxr_keyword">int</strong>[] bom) {
+<a class="jxr_linenumber" name="L629" href="#L629">629</a>         <strong class="jxr_keyword">if</strong> (bom.length != fbLength) {
+<a class="jxr_linenumber" name="L630" href="#L630">630</a>             <strong class="jxr_keyword">return</strong> false;
+<a class="jxr_linenumber" name="L631" href="#L631">631</a>         }
+<a class="jxr_linenumber" name="L632" href="#L632">632</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; bom.length; i++) {
+<a class="jxr_linenumber" name="L633" href="#L633">633</a>             <strong class="jxr_keyword">if</strong> (bom[i] != firstBytes[i]) {
+<a class="jxr_linenumber" name="L634" href="#L634">634</a>                 <strong class="jxr_keyword">return</strong> false;
+<a class="jxr_linenumber" name="L635" href="#L635">635</a>             }
+<a class="jxr_linenumber" name="L636" href="#L636">636</a>         }
+<a class="jxr_linenumber" name="L637" href="#L637">637</a>         <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">true</strong>;
+<a class="jxr_linenumber" name="L638" href="#L638">638</a>     }
+<a class="jxr_linenumber" name="L639" href="#L639">639</a> 
+<a class="jxr_linenumber" name="L640" href="#L640">640</a> }
 </pre>
 <hr/>
 <div id="footer">Copyright &#169; 2006&#x2013;2024 <a href="https://www.apache.org">Apache Software Foundation</a>. All rights reserved.</div>
diff --git a/rat0161/apache-rat-core/xref/org/apache/rat/annotation/ApacheV2LicenseAppender.html b/rat0161/apache-rat-core/xref/org/apache/rat/annotation/ApacheV2LicenseAppender.html
index 0c88086e..4cb5d934 100644
--- a/rat0161/apache-rat-core/xref/org/apache/rat/annotation/ApacheV2LicenseAppender.html
+++ b/rat0161/apache-rat-core/xref/org/apache/rat/annotation/ApacheV2LicenseAppender.html
@@ -28,82 +28,84 @@
 <a class="jxr_linenumber" name="L20" href="#L20">20</a>  
 <a class="jxr_linenumber" name="L21" href="#L21">21</a>  <strong class="jxr_keyword">import</strong> java.io.File;
 <a class="jxr_linenumber" name="L22" href="#L22">22</a>  
-<a class="jxr_linenumber" name="L23" href="#L23">23</a>  
-<a class="jxr_linenumber" name="L24" href="#L24">24</a>  <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L25" href="#L25">25</a>  <em class="jxr_javadoccomment"> * Add an Apache License V2 license header to a</em>
-<a class="jxr_linenumber" name="L26" href="#L26">26</a>  <em class="jxr_javadoccomment"> * document. This appender does not check for the</em>
-<a class="jxr_linenumber" name="L27" href="#L27">27</a>  <em class="jxr_javadoccomment"> * existence of an existing license header, it is assumed that either a second</em>
-<a class="jxr_linenumber" name="L28" href="#L28">28</a>  <em class="jxr_javadoccomment"> * license header is intentional or that there is no license header present</em>
-<a class="jxr_linenumber" name="L29" href="#L29">29</a>  <em class="jxr_javadoccomment"> * already.</em>
-<a class="jxr_linenumber" name="L30" href="#L30">30</a>  <em class="jxr_javadoccomment"> */</em>
-<a class="jxr_linenumber" name="L31" href="#L31">31</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a name="ApacheV2LicenseAppender" href="../../../../org/apache/rat/annotation/ApacheV2LicenseAppender.html#ApacheV2LicenseAppender">ApacheV2LicenseAppender</a> <strong class="jxr_keyword">extends</strong> <a name="AbstractLicenseAppender" href="../../../../org/apache/rat/annotation/AbstractLicenseAppender.html#AbstractLicenseAppender">AbstractLic [...]
-<a class="jxr_linenumber" name="L32" href="#L32">32</a>  
-<a class="jxr_linenumber" name="L33" href="#L33">33</a>      <strong class="jxr_keyword">private</strong> String copyright;
+<a class="jxr_linenumber" name="L23" href="#L23">23</a>  <strong class="jxr_keyword">import</strong> org.apache.rat.utils.Log;
+<a class="jxr_linenumber" name="L24" href="#L24">24</a>  
+<a class="jxr_linenumber" name="L25" href="#L25">25</a>  
+<a class="jxr_linenumber" name="L26" href="#L26">26</a>  <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L27" href="#L27">27</a>  <em class="jxr_javadoccomment"> * Add an Apache License V2 license header to a</em>
+<a class="jxr_linenumber" name="L28" href="#L28">28</a>  <em class="jxr_javadoccomment"> * document. This appender does not check for the</em>
+<a class="jxr_linenumber" name="L29" href="#L29">29</a>  <em class="jxr_javadoccomment"> * existence of an existing license header, it is assumed that either a second</em>
+<a class="jxr_linenumber" name="L30" href="#L30">30</a>  <em class="jxr_javadoccomment"> * license header is intentional or that there is no license header present</em>
+<a class="jxr_linenumber" name="L31" href="#L31">31</a>  <em class="jxr_javadoccomment"> * already.</em>
+<a class="jxr_linenumber" name="L32" href="#L32">32</a>  <em class="jxr_javadoccomment"> */</em>
+<a class="jxr_linenumber" name="L33" href="#L33">33</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a name="ApacheV2LicenseAppender" href="../../../../org/apache/rat/annotation/ApacheV2LicenseAppender.html#ApacheV2LicenseAppender">ApacheV2LicenseAppender</a> <strong class="jxr_keyword">extends</strong> <a name="AbstractLicenseAppender" href="../../../../org/apache/rat/annotation/AbstractLicenseAppender.html#AbstractLicenseAppender">AbstractLic [...]
 <a class="jxr_linenumber" name="L34" href="#L34">34</a>  
-<a class="jxr_linenumber" name="L35" href="#L35">35</a>      <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L36" href="#L36">36</a>  <em class="jxr_javadoccomment">     * Create a license appender with the standard ASF license header.</em>
-<a class="jxr_linenumber" name="L37" href="#L37">37</a>  <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="L38" href="#L38">38</a>      <strong class="jxr_keyword">public</strong> <a name="ApacheV2LicenseAppender" href="../../../../org/apache/rat/annotation/ApacheV2LicenseAppender.html#ApacheV2LicenseAppender">ApacheV2LicenseAppender</a>() {
-<a class="jxr_linenumber" name="L39" href="#L39">39</a>          <strong class="jxr_keyword">super</strong>();
-<a class="jxr_linenumber" name="L40" href="#L40">40</a>      }
-<a class="jxr_linenumber" name="L41" href="#L41">41</a>  
-<a class="jxr_linenumber" name="L42" href="#L42">42</a>      <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L43" href="#L43">43</a>  <em class="jxr_javadoccomment">     * Create a license appender with the given copyright line. This should be of</em>
-<a class="jxr_linenumber" name="L44" href="#L44">44</a>  <em class="jxr_javadoccomment">     * the form &amp;quot;Copyright 2008 Foo&amp;quot;</em>
-<a class="jxr_linenumber" name="L45" href="#L45">45</a>  <em class="jxr_javadoccomment">     *</em>
-<a class="jxr_linenumber" name="L46" href="#L46">46</a>  <em class="jxr_javadoccomment">     * @param copyright copyright line.</em>
-<a class="jxr_linenumber" name="L47" href="#L47">47</a>  <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="L48" href="#L48">48</a>      <strong class="jxr_keyword">public</strong> <a name="ApacheV2LicenseAppender" href="../../../../org/apache/rat/annotation/ApacheV2LicenseAppender.html#ApacheV2LicenseAppender">ApacheV2LicenseAppender</a>(String copyright) {
-<a class="jxr_linenumber" name="L49" href="#L49">49</a>          <strong class="jxr_keyword">super</strong>();
-<a class="jxr_linenumber" name="L50" href="#L50">50</a>          <strong class="jxr_keyword">this</strong>.copyright = copyright;
-<a class="jxr_linenumber" name="L51" href="#L51">51</a>      }
-<a class="jxr_linenumber" name="L52" href="#L52">52</a>  
-<a class="jxr_linenumber" name="L53" href="#L53">53</a>      @Override
-<a class="jxr_linenumber" name="L54" href="#L54">54</a>      <strong class="jxr_keyword">public</strong> String getLicenseHeader(File document) {
-<a class="jxr_linenumber" name="L55" href="#L55">55</a>          <strong class="jxr_keyword">int</strong> type = getType(document);
-<a class="jxr_linenumber" name="L56" href="#L56">56</a>          StringBuilder sb = <strong class="jxr_keyword">new</strong> StringBuilder();
-<a class="jxr_linenumber" name="L57" href="#L57">57</a>          <strong class="jxr_keyword">if</strong> (copyright == <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="L58" href="#L58">58</a>              sb.append(getFirstLine(type));
-<a class="jxr_linenumber" name="L59" href="#L59">59</a>              sb.append(getLine(type, <span class="jxr_string">"Licensed to the Apache Software Foundation (ASF) under one"</span>));
-<a class="jxr_linenumber" name="L60" href="#L60">60</a>              sb.append(getLine(type, <span class="jxr_string">"or more contributor license agreements.  See the NOTICE file"</span>));
-<a class="jxr_linenumber" name="L61" href="#L61">61</a>              sb.append(getLine(type, <span class="jxr_string">"distributed with this work for additional information"</span>));
-<a class="jxr_linenumber" name="L62" href="#L62">62</a>              sb.append(getLine(type, <span class="jxr_string">"regarding copyright ownership.  The ASF licenses this file"</span>));
-<a class="jxr_linenumber" name="L63" href="#L63">63</a>              sb.append(getLine(type, <span class="jxr_string">"to you under the Apache License, Version 2.0 (the"</span>));
-<a class="jxr_linenumber" name="L64" href="#L64">64</a>              sb.append(getLine(type, <span class="jxr_string">"\&quot;License\&quot;); you may not use this file except in compliance"</span>));
-<a class="jxr_linenumber" name="L65" href="#L65">65</a>              sb.append(getLine(type, <span class="jxr_string">"with the License.  You may obtain a copy of the License at"</span>));
-<a class="jxr_linenumber" name="L66" href="#L66">66</a>              sb.append(getLine(type, <span class="jxr_string">""</span>));
-<a class="jxr_linenumber" name="L67" href="#L67">67</a>              sb.append(getLine(type, <span class="jxr_string">"  http://www.apache.org/licenses/LICENSE-2.0"</span>));
+<a class="jxr_linenumber" name="L35" href="#L35">35</a>      <strong class="jxr_keyword">private</strong> String copyright;
+<a class="jxr_linenumber" name="L36" href="#L36">36</a>  
+<a class="jxr_linenumber" name="L37" href="#L37">37</a>      <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L38" href="#L38">38</a>  <em class="jxr_javadoccomment">     * Create a license appender with the standard ASF license header.</em>
+<a class="jxr_linenumber" name="L39" href="#L39">39</a>  <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="L40" href="#L40">40</a>      <strong class="jxr_keyword">public</strong> <a name="ApacheV2LicenseAppender" href="../../../../org/apache/rat/annotation/ApacheV2LicenseAppender.html#ApacheV2LicenseAppender">ApacheV2LicenseAppender</a>(<strong class="jxr_keyword">final</strong> <a name="Log" href="../../../../org/apache/rat/utils/Log.html#Log">Log</a> log) {
+<a class="jxr_linenumber" name="L41" href="#L41">41</a>          <strong class="jxr_keyword">super</strong>(log);
+<a class="jxr_linenumber" name="L42" href="#L42">42</a>      }
+<a class="jxr_linenumber" name="L43" href="#L43">43</a>  
+<a class="jxr_linenumber" name="L44" href="#L44">44</a>      <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L45" href="#L45">45</a>  <em class="jxr_javadoccomment">     * Create a license appender with the given copyright line. This should be of</em>
+<a class="jxr_linenumber" name="L46" href="#L46">46</a>  <em class="jxr_javadoccomment">     * the form &amp;quot;Copyright 2008 Foo&amp;quot;</em>
+<a class="jxr_linenumber" name="L47" href="#L47">47</a>  <em class="jxr_javadoccomment">     *</em>
+<a class="jxr_linenumber" name="L48" href="#L48">48</a>  <em class="jxr_javadoccomment">     * @param copyright copyright line.</em>
+<a class="jxr_linenumber" name="L49" href="#L49">49</a>  <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="L50" href="#L50">50</a>      <strong class="jxr_keyword">public</strong> <a name="ApacheV2LicenseAppender" href="../../../../org/apache/rat/annotation/ApacheV2LicenseAppender.html#ApacheV2LicenseAppender">ApacheV2LicenseAppender</a>(<strong class="jxr_keyword">final</strong> <a name="Log" href="../../../../org/apache/rat/utils/Log.html#Log">Log</a> log, String copyright) {
+<a class="jxr_linenumber" name="L51" href="#L51">51</a>          <strong class="jxr_keyword">super</strong>(log);
+<a class="jxr_linenumber" name="L52" href="#L52">52</a>          <strong class="jxr_keyword">this</strong>.copyright = copyright;
+<a class="jxr_linenumber" name="L53" href="#L53">53</a>      }
+<a class="jxr_linenumber" name="L54" href="#L54">54</a>  
+<a class="jxr_linenumber" name="L55" href="#L55">55</a>      @Override
+<a class="jxr_linenumber" name="L56" href="#L56">56</a>      <strong class="jxr_keyword">public</strong> String getLicenseHeader(File document) {
+<a class="jxr_linenumber" name="L57" href="#L57">57</a>          <strong class="jxr_keyword">int</strong> type = getType(document);
+<a class="jxr_linenumber" name="L58" href="#L58">58</a>          StringBuilder sb = <strong class="jxr_keyword">new</strong> StringBuilder();
+<a class="jxr_linenumber" name="L59" href="#L59">59</a>          <strong class="jxr_keyword">if</strong> (copyright == <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="L60" href="#L60">60</a>              sb.append(getFirstLine(type));
+<a class="jxr_linenumber" name="L61" href="#L61">61</a>              sb.append(getLine(type, <span class="jxr_string">"Licensed to the Apache Software Foundation (ASF) under one"</span>));
+<a class="jxr_linenumber" name="L62" href="#L62">62</a>              sb.append(getLine(type, <span class="jxr_string">"or more contributor license agreements.  See the NOTICE file"</span>));
+<a class="jxr_linenumber" name="L63" href="#L63">63</a>              sb.append(getLine(type, <span class="jxr_string">"distributed with this work for additional information"</span>));
+<a class="jxr_linenumber" name="L64" href="#L64">64</a>              sb.append(getLine(type, <span class="jxr_string">"regarding copyright ownership.  The ASF licenses this file"</span>));
+<a class="jxr_linenumber" name="L65" href="#L65">65</a>              sb.append(getLine(type, <span class="jxr_string">"to you under the Apache License, Version 2.0 (the"</span>));
+<a class="jxr_linenumber" name="L66" href="#L66">66</a>              sb.append(getLine(type, <span class="jxr_string">"\&quot;License\&quot;); you may not use this file except in compliance"</span>));
+<a class="jxr_linenumber" name="L67" href="#L67">67</a>              sb.append(getLine(type, <span class="jxr_string">"with the License.  You may obtain a copy of the License at"</span>));
 <a class="jxr_linenumber" name="L68" href="#L68">68</a>              sb.append(getLine(type, <span class="jxr_string">""</span>));
-<a class="jxr_linenumber" name="L69" href="#L69">69</a>              sb.append(getLine(type, <span class="jxr_string">"Unless required by applicable law or agreed to in writing,"</span>));
-<a class="jxr_linenumber" name="L70" href="#L70">70</a>              sb.append(getLine(type, <span class="jxr_string">"software distributed under the License is distributed on an"</span>));
-<a class="jxr_linenumber" name="L71" href="#L71">71</a>              sb.append(getLine(type, <span class="jxr_string">"\&quot;AS IS\&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY"</span>));
-<a class="jxr_linenumber" name="L72" href="#L72">72</a>              sb.append(getLine(type, <span class="jxr_string">"KIND, either express or implied.  See the License for the"</span>));
-<a class="jxr_linenumber" name="L73" href="#L73">73</a>              sb.append(getLine(type, <span class="jxr_string">"specific language governing permissions and limitations"</span>));
-<a class="jxr_linenumber" name="L74" href="#L74">74</a>              sb.append(getLine(type, <span class="jxr_string">"under the License."</span>));
-<a class="jxr_linenumber" name="L75" href="#L75">75</a>              sb.append(getLastLine(type));
-<a class="jxr_linenumber" name="L76" href="#L76">76</a>          } <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="L77" href="#L77">77</a>              sb.append(getFirstLine(type));
-<a class="jxr_linenumber" name="L78" href="#L78">78</a>              sb.append(getLine(type, copyright));
-<a class="jxr_linenumber" name="L79" href="#L79">79</a>              sb.append(getLine(type, <span class="jxr_string">""</span>));
-<a class="jxr_linenumber" name="L80" href="#L80">80</a>              sb.append(getLine(type, <span class="jxr_string">"Licensed under the Apache License, Version 2.0 (the \&quot;License\&quot;);"</span>));
-<a class="jxr_linenumber" name="L81" href="#L81">81</a>              sb.append(getLine(type, <span class="jxr_string">"you may not use this file except in compliance with the License."</span>));
-<a class="jxr_linenumber" name="L82" href="#L82">82</a>              sb.append(getLine(type, <span class="jxr_string">"You may obtain a copy of the License at"</span>));
-<a class="jxr_linenumber" name="L83" href="#L83">83</a>              sb.append(getLine(type, <span class="jxr_string">""</span>));
-<a class="jxr_linenumber" name="L84" href="#L84">84</a>              sb.append(getLine(type, <span class="jxr_string">"  http://www.apache.org/licenses/LICENSE-2.0"</span>));
+<a class="jxr_linenumber" name="L69" href="#L69">69</a>              sb.append(getLine(type, <span class="jxr_string">"  http://www.apache.org/licenses/LICENSE-2.0"</span>));
+<a class="jxr_linenumber" name="L70" href="#L70">70</a>              sb.append(getLine(type, <span class="jxr_string">""</span>));
+<a class="jxr_linenumber" name="L71" href="#L71">71</a>              sb.append(getLine(type, <span class="jxr_string">"Unless required by applicable law or agreed to in writing,"</span>));
+<a class="jxr_linenumber" name="L72" href="#L72">72</a>              sb.append(getLine(type, <span class="jxr_string">"software distributed under the License is distributed on an"</span>));
+<a class="jxr_linenumber" name="L73" href="#L73">73</a>              sb.append(getLine(type, <span class="jxr_string">"\&quot;AS IS\&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY"</span>));
+<a class="jxr_linenumber" name="L74" href="#L74">74</a>              sb.append(getLine(type, <span class="jxr_string">"KIND, either express or implied.  See the License for the"</span>));
+<a class="jxr_linenumber" name="L75" href="#L75">75</a>              sb.append(getLine(type, <span class="jxr_string">"specific language governing permissions and limitations"</span>));
+<a class="jxr_linenumber" name="L76" href="#L76">76</a>              sb.append(getLine(type, <span class="jxr_string">"under the License."</span>));
+<a class="jxr_linenumber" name="L77" href="#L77">77</a>              sb.append(getLastLine(type));
+<a class="jxr_linenumber" name="L78" href="#L78">78</a>          } <strong class="jxr_keyword">else</strong> {
+<a class="jxr_linenumber" name="L79" href="#L79">79</a>              sb.append(getFirstLine(type));
+<a class="jxr_linenumber" name="L80" href="#L80">80</a>              sb.append(getLine(type, copyright));
+<a class="jxr_linenumber" name="L81" href="#L81">81</a>              sb.append(getLine(type, <span class="jxr_string">""</span>));
+<a class="jxr_linenumber" name="L82" href="#L82">82</a>              sb.append(getLine(type, <span class="jxr_string">"Licensed under the Apache License, Version 2.0 (the \&quot;License\&quot;);"</span>));
+<a class="jxr_linenumber" name="L83" href="#L83">83</a>              sb.append(getLine(type, <span class="jxr_string">"you may not use this file except in compliance with the License."</span>));
+<a class="jxr_linenumber" name="L84" href="#L84">84</a>              sb.append(getLine(type, <span class="jxr_string">"You may obtain a copy of the License at"</span>));
 <a class="jxr_linenumber" name="L85" href="#L85">85</a>              sb.append(getLine(type, <span class="jxr_string">""</span>));
-<a class="jxr_linenumber" name="L86" href="#L86">86</a>              sb.append(getLine(type, <span class="jxr_string">"Unless required by applicable law or agreed to in writing,"</span>));
-<a class="jxr_linenumber" name="L87" href="#L87">87</a>              sb.append(getLine(type, <span class="jxr_string">"software distributed under the License is distributed on an"</span>));
-<a class="jxr_linenumber" name="L88" href="#L88">88</a>              sb.append(getLine(type, <span class="jxr_string">"\&quot;AS IS\&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY"</span>));
-<a class="jxr_linenumber" name="L89" href="#L89">89</a>              sb.append(getLine(type, <span class="jxr_string">"KIND, either express or implied.  See the License for the"</span>));
-<a class="jxr_linenumber" name="L90" href="#L90">90</a>              sb.append(getLine(type, <span class="jxr_string">"specific language governing permissions and limitations"</span>));
-<a class="jxr_linenumber" name="L91" href="#L91">91</a>              sb.append(getLine(type, <span class="jxr_string">"under the License."</span>));
-<a class="jxr_linenumber" name="L92" href="#L92">92</a>              sb.append(getLastLine(type));
-<a class="jxr_linenumber" name="L93" href="#L93">93</a>          }
-<a class="jxr_linenumber" name="L94" href="#L94">94</a>          <strong class="jxr_keyword">return</strong> sb.toString();
-<a class="jxr_linenumber" name="L95" href="#L95">95</a>      }
-<a class="jxr_linenumber" name="L96" href="#L96">96</a>  
-<a class="jxr_linenumber" name="L97" href="#L97">97</a>  
-<a class="jxr_linenumber" name="L98" href="#L98">98</a>  }
+<a class="jxr_linenumber" name="L86" href="#L86">86</a>              sb.append(getLine(type, <span class="jxr_string">"  http://www.apache.org/licenses/LICENSE-2.0"</span>));
+<a class="jxr_linenumber" name="L87" href="#L87">87</a>              sb.append(getLine(type, <span class="jxr_string">""</span>));
+<a class="jxr_linenumber" name="L88" href="#L88">88</a>              sb.append(getLine(type, <span class="jxr_string">"Unless required by applicable law or agreed to in writing,"</span>));
+<a class="jxr_linenumber" name="L89" href="#L89">89</a>              sb.append(getLine(type, <span class="jxr_string">"software distributed under the License is distributed on an"</span>));
+<a class="jxr_linenumber" name="L90" href="#L90">90</a>              sb.append(getLine(type, <span class="jxr_string">"\&quot;AS IS\&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY"</span>));
+<a class="jxr_linenumber" name="L91" href="#L91">91</a>              sb.append(getLine(type, <span class="jxr_string">"KIND, either express or implied.  See the License for the"</span>));
+<a class="jxr_linenumber" name="L92" href="#L92">92</a>              sb.append(getLine(type, <span class="jxr_string">"specific language governing permissions and limitations"</span>));
+<a class="jxr_linenumber" name="L93" href="#L93">93</a>              sb.append(getLine(type, <span class="jxr_string">"under the License."</span>));
+<a class="jxr_linenumber" name="L94" href="#L94">94</a>              sb.append(getLastLine(type));
+<a class="jxr_linenumber" name="L95" href="#L95">95</a>          }
+<a class="jxr_linenumber" name="L96" href="#L96">96</a>          <strong class="jxr_keyword">return</strong> sb.toString();
+<a class="jxr_linenumber" name="L97" href="#L97">97</a>      }
+<a class="jxr_linenumber" name="L98" href="#L98">98</a>  
+<a class="jxr_linenumber" name="L99" href="#L99">99</a>  
+<a class="jxr_linenumber" name="L100" href="#L100">100</a> }
 </pre>
 <hr/>
 <div id="footer">Copyright &#169; 2006&#x2013;2024 <a href="https://www.apache.org">Apache Software Foundation</a>. All rights reserved.</div>
diff --git a/rat0161/apache-rat-core/xref/org/apache/rat/api/MetaData.html b/rat0161/apache-rat-core/xref/org/apache/rat/api/MetaData.html
index bc423f70..a3d8b3e0 100644
--- a/rat0161/apache-rat-core/xref/org/apache/rat/api/MetaData.html
+++ b/rat0161/apache-rat-core/xref/org/apache/rat/api/MetaData.html
@@ -213,155 +213,156 @@
 <a class="jxr_linenumber" name="L205" href="#L205">205</a> <em class="jxr_javadoccomment">     * @param license the license to add metadata for.</em>
 <a class="jxr_linenumber" name="L206" href="#L206">206</a> <em class="jxr_javadoccomment">     */</em>
 <a class="jxr_linenumber" name="L207" href="#L207">207</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> reportOnLicense(<a name="ILicense" href="../../../../org/apache/rat/license/ILicense.html#ILicense">ILicense</a> license) {
-<a class="jxr_linenumber" name="L208" href="#L208">208</a>         <strong class="jxr_keyword">if</strong> (StringUtils.isNotBlank(license.getNotes())) {
-<a class="jxr_linenumber" name="L209" href="#L209">209</a>             set(<strong class="jxr_keyword">new</strong> MetaData.Datum(MetaData.RAT_URL_HEADER_SAMPLE, license.getNotes()));
-<a class="jxr_linenumber" name="L210" href="#L210">210</a>         }
-<a class="jxr_linenumber" name="L211" href="#L211">211</a>         set(<strong class="jxr_keyword">new</strong> MetaData.Datum(MetaData.RAT_URL_HEADER_CATEGORY, license.getLicenseFamily().getFamilyCategory()));
-<a class="jxr_linenumber" name="L212" href="#L212">212</a>         set(<strong class="jxr_keyword">new</strong> MetaData.Datum(MetaData.RAT_URL_LICENSE_FAMILY_CATEGORY, license.getLicenseFamily().getFamilyCategory()));
-<a class="jxr_linenumber" name="L213" href="#L213">213</a>         set(<strong class="jxr_keyword">new</strong> MetaData.Datum(MetaData.RAT_URL_LICENSE_FAMILY_NAME, license.getLicenseFamily().getFamilyName()));
-<a class="jxr_linenumber" name="L214" href="#L214">214</a>     }
-<a class="jxr_linenumber" name="L215" href="#L215">215</a> 
-<a class="jxr_linenumber" name="L216" href="#L216">216</a>     
-<a class="jxr_linenumber" name="L217" href="#L217">217</a>     <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L218" href="#L218">218</a> <em class="jxr_javadoccomment">     * Gets all data.</em>
-<a class="jxr_linenumber" name="L219" href="#L219">219</a> <em class="jxr_javadoccomment">     * @return unmodifiable view of the meta data.</em>
-<a class="jxr_linenumber" name="L220" href="#L220">220</a> <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="L221" href="#L221">221</a>     <strong class="jxr_keyword">public</strong> Collection&lt;Datum&gt; getData() {
-<a class="jxr_linenumber" name="L222" href="#L222">222</a>         <strong class="jxr_keyword">return</strong> Collections.unmodifiableCollection(data);
-<a class="jxr_linenumber" name="L223" href="#L223">223</a>     }
-<a class="jxr_linenumber" name="L224" href="#L224">224</a>     
-<a class="jxr_linenumber" name="L225" href="#L225">225</a>     <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L226" href="#L226">226</a> <em class="jxr_javadoccomment">     * Adds a new datum.</em>
-<a class="jxr_linenumber" name="L227" href="#L227">227</a> <em class="jxr_javadoccomment">     * Existing data with the same name are not replaced.</em>
-<a class="jxr_linenumber" name="L228" href="#L228">228</a> <em class="jxr_javadoccomment">     * @param datum datum to add.</em>
-<a class="jxr_linenumber" name="L229" href="#L229">229</a> <em class="jxr_javadoccomment">     * @see #set(org.apache.rat.api.MetaData.Datum)</em>
-<a class="jxr_linenumber" name="L230" href="#L230">230</a> <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="L231" href="#L231">231</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> add(<strong class="jxr_keyword">final</strong> Datum datum) {
-<a class="jxr_linenumber" name="L232" href="#L232">232</a>        data.add(datum); 
-<a class="jxr_linenumber" name="L233" href="#L233">233</a>     }
-<a class="jxr_linenumber" name="L234" href="#L234">234</a>     
-<a class="jxr_linenumber" name="L235" href="#L235">235</a>     <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L236" href="#L236">236</a> <em class="jxr_javadoccomment">     * Puts in a new datum replacing any existing data.</em>
-<a class="jxr_linenumber" name="L237" href="#L237">237</a> <em class="jxr_javadoccomment">     * Any current data matching the name are removed.</em>
-<a class="jxr_linenumber" name="L238" href="#L238">238</a> <em class="jxr_javadoccomment">     * @param datum not null</em>
-<a class="jxr_linenumber" name="L239" href="#L239">239</a> <em class="jxr_javadoccomment">     * @see #add(org.apache.rat.api.MetaData.Datum)</em>
-<a class="jxr_linenumber" name="L240" href="#L240">240</a> <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="L241" href="#L241">241</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> set(<strong class="jxr_keyword">final</strong> Datum datum) {
-<a class="jxr_linenumber" name="L242" href="#L242">242</a>        clear(datum.getName()); 
-<a class="jxr_linenumber" name="L243" href="#L243">243</a>        add(datum);
-<a class="jxr_linenumber" name="L244" href="#L244">244</a>     }
-<a class="jxr_linenumber" name="L245" href="#L245">245</a>     
-<a class="jxr_linenumber" name="L246" href="#L246">246</a>     <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L247" href="#L247">247</a> <em class="jxr_javadoccomment">     * Gets the first datum matching the given name.</em>
-<a class="jxr_linenumber" name="L248" href="#L248">248</a> <em class="jxr_javadoccomment">     * @param name not null</em>
-<a class="jxr_linenumber" name="L249" href="#L249">249</a> <em class="jxr_javadoccomment">     * @return the matching datum first added when there is any matching data,</em>
-<a class="jxr_linenumber" name="L250" href="#L250">250</a> <em class="jxr_javadoccomment">     * null otherwise</em>
-<a class="jxr_linenumber" name="L251" href="#L251">251</a> <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="L252" href="#L252">252</a>     <strong class="jxr_keyword">public</strong> Datum get(<strong class="jxr_keyword">final</strong> String name) {
-<a class="jxr_linenumber" name="L253" href="#L253">253</a>         Datum result = <strong class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="L254" href="#L254">254</a>         <strong class="jxr_keyword">for</strong> (Datum next : data) {
-<a class="jxr_linenumber" name="L255" href="#L255">255</a>             <strong class="jxr_keyword">if</strong> (name.equals(next.getName())) {
-<a class="jxr_linenumber" name="L256" href="#L256">256</a>                 result = next;
-<a class="jxr_linenumber" name="L257" href="#L257">257</a>                 <strong class="jxr_keyword">break</strong>;
-<a class="jxr_linenumber" name="L258" href="#L258">258</a>             }
-<a class="jxr_linenumber" name="L259" href="#L259">259</a>         }
-<a class="jxr_linenumber" name="L260" href="#L260">260</a>         <strong class="jxr_keyword">return</strong> result;
-<a class="jxr_linenumber" name="L261" href="#L261">261</a>     }
-<a class="jxr_linenumber" name="L262" href="#L262">262</a>     
-<a class="jxr_linenumber" name="L263" href="#L263">263</a>     <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L264" href="#L264">264</a> <em class="jxr_javadoccomment">     * Gets the value of the first datum matching the given name.</em>
-<a class="jxr_linenumber" name="L265" href="#L265">265</a> <em class="jxr_javadoccomment">     * @param name not null</em>
-<a class="jxr_linenumber" name="L266" href="#L266">266</a> <em class="jxr_javadoccomment">     * @return the value of the matchin datum first added when there is any matching data,</em>
-<a class="jxr_linenumber" name="L267" href="#L267">267</a> <em class="jxr_javadoccomment">     * null otherwise</em>
-<a class="jxr_linenumber" name="L268" href="#L268">268</a> <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="L269" href="#L269">269</a>     <strong class="jxr_keyword">public</strong> String value(<strong class="jxr_keyword">final</strong> String name) {
-<a class="jxr_linenumber" name="L270" href="#L270">270</a>         <strong class="jxr_keyword">final</strong> Datum datum = get(name);
-<a class="jxr_linenumber" name="L271" href="#L271">271</a>         <strong class="jxr_keyword">final</strong> String result;
-<a class="jxr_linenumber" name="L272" href="#L272">272</a>         <strong class="jxr_keyword">if</strong> (datum == <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="L273" href="#L273">273</a>             result = <strong class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="L274" href="#L274">274</a>         } <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="L275" href="#L275">275</a>             result = datum.getValue();
-<a class="jxr_linenumber" name="L276" href="#L276">276</a>         }
-<a class="jxr_linenumber" name="L277" href="#L277">277</a>         <strong class="jxr_keyword">return</strong> result;
-<a class="jxr_linenumber" name="L278" href="#L278">278</a>     }
-<a class="jxr_linenumber" name="L279" href="#L279">279</a>     
-<a class="jxr_linenumber" name="L280" href="#L280">280</a>     <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L281" href="#L281">281</a> <em class="jxr_javadoccomment">     * Removes all data matching the given name.</em>
-<a class="jxr_linenumber" name="L282" href="#L282">282</a> <em class="jxr_javadoccomment">     * @param name not null</em>
-<a class="jxr_linenumber" name="L283" href="#L283">283</a> <em class="jxr_javadoccomment">     * @return true if any data match, false otherwise</em>
-<a class="jxr_linenumber" name="L284" href="#L284">284</a> <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="L285" href="#L285">285</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> clear(<strong class="jxr_keyword">final</strong> String name) {
-<a class="jxr_linenumber" name="L286" href="#L286">286</a>         <strong class="jxr_keyword">boolean</strong> dataRemoved = false;
-<a class="jxr_linenumber" name="L287" href="#L287">287</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">final</strong> Iterator&lt;Datum&gt; it = data.iterator();it.hasNext();) {
-<a class="jxr_linenumber" name="L288" href="#L288">288</a>             <strong class="jxr_keyword">final</strong> Datum datum = it.next();
-<a class="jxr_linenumber" name="L289" href="#L289">289</a>             <strong class="jxr_keyword">if</strong> (datum.getName().equals(name)) {
-<a class="jxr_linenumber" name="L290" href="#L290">290</a>                 it.remove();
-<a class="jxr_linenumber" name="L291" href="#L291">291</a>                 dataRemoved = <strong class="jxr_keyword">true</strong>;
-<a class="jxr_linenumber" name="L292" href="#L292">292</a>             }
-<a class="jxr_linenumber" name="L293" href="#L293">293</a>         }
-<a class="jxr_linenumber" name="L294" href="#L294">294</a>         <strong class="jxr_keyword">return</strong> dataRemoved;
-<a class="jxr_linenumber" name="L295" href="#L295">295</a>     }
-<a class="jxr_linenumber" name="L296" href="#L296">296</a>     
-<a class="jxr_linenumber" name="L297" href="#L297">297</a>     <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L298" href="#L298">298</a> <em class="jxr_javadoccomment">     * Clears all data.</em>
-<a class="jxr_linenumber" name="L299" href="#L299">299</a> <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="L300" href="#L300">300</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> clear() {
-<a class="jxr_linenumber" name="L301" href="#L301">301</a>         data.clear();
-<a class="jxr_linenumber" name="L302" href="#L302">302</a>     }
-<a class="jxr_linenumber" name="L303" href="#L303">303</a>     
-<a class="jxr_linenumber" name="L304" href="#L304">304</a>     <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L305" href="#L305">305</a> <em class="jxr_javadoccomment">     * A datum.</em>
-<a class="jxr_linenumber" name="L306" href="#L306">306</a> <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="L307" href="#L307">307</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">class</strong> Datum {
-<a class="jxr_linenumber" name="L308" href="#L308">308</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> String name;
-<a class="jxr_linenumber" name="L309" href="#L309">309</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> String value;
-<a class="jxr_linenumber" name="L310" href="#L310">310</a>         
-<a class="jxr_linenumber" name="L311" href="#L311">311</a>         <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L312" href="#L312">312</a> <em class="jxr_javadoccomment">         * Constructs a datum.</em>
-<a class="jxr_linenumber" name="L313" href="#L313">313</a> <em class="jxr_javadoccomment">         * @param name not null</em>
-<a class="jxr_linenumber" name="L314" href="#L314">314</a> <em class="jxr_javadoccomment">         * @param value not null</em>
-<a class="jxr_linenumber" name="L315" href="#L315">315</a> <em class="jxr_javadoccomment">         */</em>
-<a class="jxr_linenumber" name="L316" href="#L316">316</a>         <strong class="jxr_keyword">public</strong> Datum(<strong class="jxr_keyword">final</strong> String name, <strong class="jxr_keyword">final</strong> String value) {
-<a class="jxr_linenumber" name="L317" href="#L317">317</a>             <strong class="jxr_keyword">super</strong>();
-<a class="jxr_linenumber" name="L318" href="#L318">318</a>             <strong class="jxr_keyword">this</strong>.name = name;
-<a class="jxr_linenumber" name="L319" href="#L319">319</a>             <strong class="jxr_keyword">this</strong>.value = value;
-<a class="jxr_linenumber" name="L320" href="#L320">320</a>         }
-<a class="jxr_linenumber" name="L321" href="#L321">321</a>         
-<a class="jxr_linenumber" name="L322" href="#L322">322</a>         <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L323" href="#L323">323</a> <em class="jxr_javadoccomment">         * Gets the name of the data type.</em>
-<a class="jxr_linenumber" name="L324" href="#L324">324</a> <em class="jxr_javadoccomment">         * To avoid collisions, it is recommended that URLs are used.</em>
-<a class="jxr_linenumber" name="L325" href="#L325">325</a> <em class="jxr_javadoccomment">         * @return not null</em>
-<a class="jxr_linenumber" name="L326" href="#L326">326</a> <em class="jxr_javadoccomment">         */</em>
-<a class="jxr_linenumber" name="L327" href="#L327">327</a>         <strong class="jxr_keyword">public</strong> String getName() {
-<a class="jxr_linenumber" name="L328" href="#L328">328</a>             <strong class="jxr_keyword">return</strong> name;
-<a class="jxr_linenumber" name="L329" href="#L329">329</a>         }
-<a class="jxr_linenumber" name="L330" href="#L330">330</a>      
-<a class="jxr_linenumber" name="L331" href="#L331">331</a>         <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L332" href="#L332">332</a> <em class="jxr_javadoccomment">         * Data type value.</em>
-<a class="jxr_linenumber" name="L333" href="#L333">333</a> <em class="jxr_javadoccomment">         * @return not null</em>
-<a class="jxr_linenumber" name="L334" href="#L334">334</a> <em class="jxr_javadoccomment">         */</em>
-<a class="jxr_linenumber" name="L335" href="#L335">335</a>         <strong class="jxr_keyword">public</strong> String getValue() {
-<a class="jxr_linenumber" name="L336" href="#L336">336</a>             <strong class="jxr_keyword">return</strong> value;
-<a class="jxr_linenumber" name="L337" href="#L337">337</a>         }
-<a class="jxr_linenumber" name="L338" href="#L338">338</a> 
-<a class="jxr_linenumber" name="L339" href="#L339">339</a>         <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L340" href="#L340">340</a> <em class="jxr_javadoccomment">         * Constructs a &lt;code&gt;String&lt;/code&gt; with all attributes</em>
-<a class="jxr_linenumber" name="L341" href="#L341">341</a> <em class="jxr_javadoccomment">         * in name = value format.</em>
-<a class="jxr_linenumber" name="L342" href="#L342">342</a> <em class="jxr_javadoccomment">         *</em>
-<a class="jxr_linenumber" name="L343" href="#L343">343</a> <em class="jxr_javadoccomment">         * @return a &lt;code&gt;String&lt;/code&gt; representation </em>
-<a class="jxr_linenumber" name="L344" href="#L344">344</a> <em class="jxr_javadoccomment">         * of this object.</em>
-<a class="jxr_linenumber" name="L345" href="#L345">345</a> <em class="jxr_javadoccomment">         */</em>
-<a class="jxr_linenumber" name="L346" href="#L346">346</a>         @Override
-<a class="jxr_linenumber" name="L347" href="#L347">347</a>         <strong class="jxr_keyword">public</strong> String toString()
-<a class="jxr_linenumber" name="L348" href="#L348">348</a>         {
-<a class="jxr_linenumber" name="L349" href="#L349">349</a>             <strong class="jxr_keyword">return</strong> <span class="jxr_string">"Datum [ "</span>
-<a class="jxr_linenumber" name="L350" href="#L350">350</a>                 + <span class="jxr_string">"name ='"</span> + <strong class="jxr_keyword">this</strong>.name + <span class="jxr_string">"',"</span>
-<a class="jxr_linenumber" name="L351" href="#L351">351</a>                 + <span class="jxr_string">"value ='"</span> + <strong class="jxr_keyword">this</strong>.value + <span class="jxr_string">" "</span>
-<a class="jxr_linenumber" name="L352" href="#L352">352</a>                 + <span class="jxr_string">"']"</span>;
-<a class="jxr_linenumber" name="L353" href="#L353">353</a>         }
-<a class="jxr_linenumber" name="L354" href="#L354">354</a>     }
-<a class="jxr_linenumber" name="L355" href="#L355">355</a> }
-<a class="jxr_linenumber" name="L356" href="#L356">356</a>  
+<a class="jxr_linenumber" name="L208" href="#L208">208</a>         
+<a class="jxr_linenumber" name="L209" href="#L209">209</a>         <strong class="jxr_keyword">if</strong> (StringUtils.isNotBlank(license.getNotes())) {
+<a class="jxr_linenumber" name="L210" href="#L210">210</a>             set(<strong class="jxr_keyword">new</strong> MetaData.Datum(MetaData.RAT_URL_HEADER_SAMPLE, license.getNotes()));
+<a class="jxr_linenumber" name="L211" href="#L211">211</a>         }
+<a class="jxr_linenumber" name="L212" href="#L212">212</a>         set(<strong class="jxr_keyword">new</strong> MetaData.Datum(MetaData.RAT_URL_HEADER_CATEGORY, license.getLicenseFamily().getFamilyCategory()));
+<a class="jxr_linenumber" name="L213" href="#L213">213</a>         set(<strong class="jxr_keyword">new</strong> MetaData.Datum(MetaData.RAT_URL_LICENSE_FAMILY_CATEGORY, license.getLicenseFamily().getFamilyCategory()));
+<a class="jxr_linenumber" name="L214" href="#L214">214</a>         set(<strong class="jxr_keyword">new</strong> MetaData.Datum(MetaData.RAT_URL_LICENSE_FAMILY_NAME, license.getLicenseFamily().getFamilyName()));
+<a class="jxr_linenumber" name="L215" href="#L215">215</a>     }
+<a class="jxr_linenumber" name="L216" href="#L216">216</a> 
+<a class="jxr_linenumber" name="L217" href="#L217">217</a>     
+<a class="jxr_linenumber" name="L218" href="#L218">218</a>     <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L219" href="#L219">219</a> <em class="jxr_javadoccomment">     * Gets all data.</em>
+<a class="jxr_linenumber" name="L220" href="#L220">220</a> <em class="jxr_javadoccomment">     * @return unmodifiable view of the meta data.</em>
+<a class="jxr_linenumber" name="L221" href="#L221">221</a> <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="L222" href="#L222">222</a>     <strong class="jxr_keyword">public</strong> Collection&lt;Datum&gt; getData() {
+<a class="jxr_linenumber" name="L223" href="#L223">223</a>         <strong class="jxr_keyword">return</strong> Collections.unmodifiableCollection(data);
+<a class="jxr_linenumber" name="L224" href="#L224">224</a>     }
+<a class="jxr_linenumber" name="L225" href="#L225">225</a>     
+<a class="jxr_linenumber" name="L226" href="#L226">226</a>     <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L227" href="#L227">227</a> <em class="jxr_javadoccomment">     * Adds a new datum.</em>
+<a class="jxr_linenumber" name="L228" href="#L228">228</a> <em class="jxr_javadoccomment">     * Existing data with the same name are not replaced.</em>
+<a class="jxr_linenumber" name="L229" href="#L229">229</a> <em class="jxr_javadoccomment">     * @param datum datum to add.</em>
+<a class="jxr_linenumber" name="L230" href="#L230">230</a> <em class="jxr_javadoccomment">     * @see #set(org.apache.rat.api.MetaData.Datum)</em>
+<a class="jxr_linenumber" name="L231" href="#L231">231</a> <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="L232" href="#L232">232</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> add(<strong class="jxr_keyword">final</strong> Datum datum) {
+<a class="jxr_linenumber" name="L233" href="#L233">233</a>        data.add(datum); 
+<a class="jxr_linenumber" name="L234" href="#L234">234</a>     }
+<a class="jxr_linenumber" name="L235" href="#L235">235</a>     
+<a class="jxr_linenumber" name="L236" href="#L236">236</a>     <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L237" href="#L237">237</a> <em class="jxr_javadoccomment">     * Puts in a new datum replacing any existing data.</em>
+<a class="jxr_linenumber" name="L238" href="#L238">238</a> <em class="jxr_javadoccomment">     * Any current data matching the name are removed.</em>
+<a class="jxr_linenumber" name="L239" href="#L239">239</a> <em class="jxr_javadoccomment">     * @param datum not null</em>
+<a class="jxr_linenumber" name="L240" href="#L240">240</a> <em class="jxr_javadoccomment">     * @see #add(org.apache.rat.api.MetaData.Datum)</em>
+<a class="jxr_linenumber" name="L241" href="#L241">241</a> <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="L242" href="#L242">242</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> set(<strong class="jxr_keyword">final</strong> Datum datum) {
+<a class="jxr_linenumber" name="L243" href="#L243">243</a>        clear(datum.getName()); 
+<a class="jxr_linenumber" name="L244" href="#L244">244</a>        add(datum);
+<a class="jxr_linenumber" name="L245" href="#L245">245</a>     }
+<a class="jxr_linenumber" name="L246" href="#L246">246</a>     
+<a class="jxr_linenumber" name="L247" href="#L247">247</a>     <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L248" href="#L248">248</a> <em class="jxr_javadoccomment">     * Gets the first datum matching the given name.</em>
+<a class="jxr_linenumber" name="L249" href="#L249">249</a> <em class="jxr_javadoccomment">     * @param name not null</em>
+<a class="jxr_linenumber" name="L250" href="#L250">250</a> <em class="jxr_javadoccomment">     * @return the matching datum first added when there is any matching data,</em>
+<a class="jxr_linenumber" name="L251" href="#L251">251</a> <em class="jxr_javadoccomment">     * null otherwise</em>
+<a class="jxr_linenumber" name="L252" href="#L252">252</a> <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="L253" href="#L253">253</a>     <strong class="jxr_keyword">public</strong> Datum get(<strong class="jxr_keyword">final</strong> String name) {
+<a class="jxr_linenumber" name="L254" href="#L254">254</a>         Datum result = <strong class="jxr_keyword">null</strong>;
+<a class="jxr_linenumber" name="L255" href="#L255">255</a>         <strong class="jxr_keyword">for</strong> (Datum next : data) {
+<a class="jxr_linenumber" name="L256" href="#L256">256</a>             <strong class="jxr_keyword">if</strong> (name.equals(next.getName())) {
+<a class="jxr_linenumber" name="L257" href="#L257">257</a>                 result = next;
+<a class="jxr_linenumber" name="L258" href="#L258">258</a>                 <strong class="jxr_keyword">break</strong>;
+<a class="jxr_linenumber" name="L259" href="#L259">259</a>             }
+<a class="jxr_linenumber" name="L260" href="#L260">260</a>         }
+<a class="jxr_linenumber" name="L261" href="#L261">261</a>         <strong class="jxr_keyword">return</strong> result;
+<a class="jxr_linenumber" name="L262" href="#L262">262</a>     }
+<a class="jxr_linenumber" name="L263" href="#L263">263</a>     
+<a class="jxr_linenumber" name="L264" href="#L264">264</a>     <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L265" href="#L265">265</a> <em class="jxr_javadoccomment">     * Gets the value of the first datum matching the given name.</em>
+<a class="jxr_linenumber" name="L266" href="#L266">266</a> <em class="jxr_javadoccomment">     * @param name not null</em>
+<a class="jxr_linenumber" name="L267" href="#L267">267</a> <em class="jxr_javadoccomment">     * @return the value of the matchin datum first added when there is any matching data,</em>
+<a class="jxr_linenumber" name="L268" href="#L268">268</a> <em class="jxr_javadoccomment">     * null otherwise</em>
+<a class="jxr_linenumber" name="L269" href="#L269">269</a> <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="L270" href="#L270">270</a>     <strong class="jxr_keyword">public</strong> String value(<strong class="jxr_keyword">final</strong> String name) {
+<a class="jxr_linenumber" name="L271" href="#L271">271</a>         <strong class="jxr_keyword">final</strong> Datum datum = get(name);
+<a class="jxr_linenumber" name="L272" href="#L272">272</a>         <strong class="jxr_keyword">final</strong> String result;
+<a class="jxr_linenumber" name="L273" href="#L273">273</a>         <strong class="jxr_keyword">if</strong> (datum == <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="L274" href="#L274">274</a>             result = <strong class="jxr_keyword">null</strong>;
+<a class="jxr_linenumber" name="L275" href="#L275">275</a>         } <strong class="jxr_keyword">else</strong> {
+<a class="jxr_linenumber" name="L276" href="#L276">276</a>             result = datum.getValue();
+<a class="jxr_linenumber" name="L277" href="#L277">277</a>         }
+<a class="jxr_linenumber" name="L278" href="#L278">278</a>         <strong class="jxr_keyword">return</strong> result;
+<a class="jxr_linenumber" name="L279" href="#L279">279</a>     }
+<a class="jxr_linenumber" name="L280" href="#L280">280</a>     
+<a class="jxr_linenumber" name="L281" href="#L281">281</a>     <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L282" href="#L282">282</a> <em class="jxr_javadoccomment">     * Removes all data matching the given name.</em>
+<a class="jxr_linenumber" name="L283" href="#L283">283</a> <em class="jxr_javadoccomment">     * @param name not null</em>
+<a class="jxr_linenumber" name="L284" href="#L284">284</a> <em class="jxr_javadoccomment">     * @return true if any data match, false otherwise</em>
+<a class="jxr_linenumber" name="L285" href="#L285">285</a> <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="L286" href="#L286">286</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> clear(<strong class="jxr_keyword">final</strong> String name) {
+<a class="jxr_linenumber" name="L287" href="#L287">287</a>         <strong class="jxr_keyword">boolean</strong> dataRemoved = false;
+<a class="jxr_linenumber" name="L288" href="#L288">288</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">final</strong> Iterator&lt;Datum&gt; it = data.iterator();it.hasNext();) {
+<a class="jxr_linenumber" name="L289" href="#L289">289</a>             <strong class="jxr_keyword">final</strong> Datum datum = it.next();
+<a class="jxr_linenumber" name="L290" href="#L290">290</a>             <strong class="jxr_keyword">if</strong> (datum.getName().equals(name)) {
+<a class="jxr_linenumber" name="L291" href="#L291">291</a>                 it.remove();
+<a class="jxr_linenumber" name="L292" href="#L292">292</a>                 dataRemoved = <strong class="jxr_keyword">true</strong>;
+<a class="jxr_linenumber" name="L293" href="#L293">293</a>             }
+<a class="jxr_linenumber" name="L294" href="#L294">294</a>         }
+<a class="jxr_linenumber" name="L295" href="#L295">295</a>         <strong class="jxr_keyword">return</strong> dataRemoved;
+<a class="jxr_linenumber" name="L296" href="#L296">296</a>     }
+<a class="jxr_linenumber" name="L297" href="#L297">297</a>     
+<a class="jxr_linenumber" name="L298" href="#L298">298</a>     <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L299" href="#L299">299</a> <em class="jxr_javadoccomment">     * Clears all data.</em>
+<a class="jxr_linenumber" name="L300" href="#L300">300</a> <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="L301" href="#L301">301</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> clear() {
+<a class="jxr_linenumber" name="L302" href="#L302">302</a>         data.clear();
+<a class="jxr_linenumber" name="L303" href="#L303">303</a>     }
+<a class="jxr_linenumber" name="L304" href="#L304">304</a>     
+<a class="jxr_linenumber" name="L305" href="#L305">305</a>     <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L306" href="#L306">306</a> <em class="jxr_javadoccomment">     * A datum.</em>
+<a class="jxr_linenumber" name="L307" href="#L307">307</a> <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="L308" href="#L308">308</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">class</strong> Datum {
+<a class="jxr_linenumber" name="L309" href="#L309">309</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> String name;
+<a class="jxr_linenumber" name="L310" href="#L310">310</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> String value;
+<a class="jxr_linenumber" name="L311" href="#L311">311</a>         
+<a class="jxr_linenumber" name="L312" href="#L312">312</a>         <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L313" href="#L313">313</a> <em class="jxr_javadoccomment">         * Constructs a datum.</em>
+<a class="jxr_linenumber" name="L314" href="#L314">314</a> <em class="jxr_javadoccomment">         * @param name not null</em>
+<a class="jxr_linenumber" name="L315" href="#L315">315</a> <em class="jxr_javadoccomment">         * @param value not null</em>
+<a class="jxr_linenumber" name="L316" href="#L316">316</a> <em class="jxr_javadoccomment">         */</em>
+<a class="jxr_linenumber" name="L317" href="#L317">317</a>         <strong class="jxr_keyword">public</strong> Datum(<strong class="jxr_keyword">final</strong> String name, <strong class="jxr_keyword">final</strong> String value) {
+<a class="jxr_linenumber" name="L318" href="#L318">318</a>             <strong class="jxr_keyword">super</strong>();
+<a class="jxr_linenumber" name="L319" href="#L319">319</a>             <strong class="jxr_keyword">this</strong>.name = name;
+<a class="jxr_linenumber" name="L320" href="#L320">320</a>             <strong class="jxr_keyword">this</strong>.value = value;
+<a class="jxr_linenumber" name="L321" href="#L321">321</a>         }
+<a class="jxr_linenumber" name="L322" href="#L322">322</a>         
+<a class="jxr_linenumber" name="L323" href="#L323">323</a>         <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L324" href="#L324">324</a> <em class="jxr_javadoccomment">         * Gets the name of the data type.</em>
+<a class="jxr_linenumber" name="L325" href="#L325">325</a> <em class="jxr_javadoccomment">         * To avoid collisions, it is recommended that URLs are used.</em>
+<a class="jxr_linenumber" name="L326" href="#L326">326</a> <em class="jxr_javadoccomment">         * @return not null</em>
+<a class="jxr_linenumber" name="L327" href="#L327">327</a> <em class="jxr_javadoccomment">         */</em>
+<a class="jxr_linenumber" name="L328" href="#L328">328</a>         <strong class="jxr_keyword">public</strong> String getName() {
+<a class="jxr_linenumber" name="L329" href="#L329">329</a>             <strong class="jxr_keyword">return</strong> name;
+<a class="jxr_linenumber" name="L330" href="#L330">330</a>         }
+<a class="jxr_linenumber" name="L331" href="#L331">331</a>      
+<a class="jxr_linenumber" name="L332" href="#L332">332</a>         <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L333" href="#L333">333</a> <em class="jxr_javadoccomment">         * Data type value.</em>
+<a class="jxr_linenumber" name="L334" href="#L334">334</a> <em class="jxr_javadoccomment">         * @return not null</em>
+<a class="jxr_linenumber" name="L335" href="#L335">335</a> <em class="jxr_javadoccomment">         */</em>
+<a class="jxr_linenumber" name="L336" href="#L336">336</a>         <strong class="jxr_keyword">public</strong> String getValue() {
+<a class="jxr_linenumber" name="L337" href="#L337">337</a>             <strong class="jxr_keyword">return</strong> value;
+<a class="jxr_linenumber" name="L338" href="#L338">338</a>         }
+<a class="jxr_linenumber" name="L339" href="#L339">339</a> 
+<a class="jxr_linenumber" name="L340" href="#L340">340</a>         <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L341" href="#L341">341</a> <em class="jxr_javadoccomment">         * Constructs a &lt;code&gt;String&lt;/code&gt; with all attributes</em>
+<a class="jxr_linenumber" name="L342" href="#L342">342</a> <em class="jxr_javadoccomment">         * in name = value format.</em>
+<a class="jxr_linenumber" name="L343" href="#L343">343</a> <em class="jxr_javadoccomment">         *</em>
+<a class="jxr_linenumber" name="L344" href="#L344">344</a> <em class="jxr_javadoccomment">         * @return a &lt;code&gt;String&lt;/code&gt; representation </em>
+<a class="jxr_linenumber" name="L345" href="#L345">345</a> <em class="jxr_javadoccomment">         * of this object.</em>
+<a class="jxr_linenumber" name="L346" href="#L346">346</a> <em class="jxr_javadoccomment">         */</em>
+<a class="jxr_linenumber" name="L347" href="#L347">347</a>         @Override
+<a class="jxr_linenumber" name="L348" href="#L348">348</a>         <strong class="jxr_keyword">public</strong> String toString()
+<a class="jxr_linenumber" name="L349" href="#L349">349</a>         {
+<a class="jxr_linenumber" name="L350" href="#L350">350</a>             <strong class="jxr_keyword">return</strong> <span class="jxr_string">"Datum [ "</span>
+<a class="jxr_linenumber" name="L351" href="#L351">351</a>                 + <span class="jxr_string">"name ='"</span> + <strong class="jxr_keyword">this</strong>.name + <span class="jxr_string">"',"</span>
+<a class="jxr_linenumber" name="L352" href="#L352">352</a>                 + <span class="jxr_string">"value ='"</span> + <strong class="jxr_keyword">this</strong>.value + <span class="jxr_string">" "</span>
+<a class="jxr_linenumber" name="L353" href="#L353">353</a>                 + <span class="jxr_string">"']"</span>;
+<a class="jxr_linenumber" name="L354" href="#L354">354</a>         }
+<a class="jxr_linenumber" name="L355" href="#L355">355</a>     }
+<a class="jxr_linenumber" name="L356" href="#L356">356</a> }
+<a class="jxr_linenumber" name="L357" href="#L357">357</a>  
 </pre>
 <hr/>
 <div id="footer">Copyright &#169; 2006&#x2013;2024 <a href="https://www.apache.org">Apache Software Foundation</a>. All rights reserved.</div>
diff --git a/rat0161/apache-rat-core/xref/org/apache/rat/report/claim/impl/xml/SimpleXmlClaimReporter.html b/rat0161/apache-rat-core/xref/org/apache/rat/report/claim/impl/xml/SimpleXmlClaimReporter.html
index e5a48da2..e927c22d 100644
--- a/rat0161/apache-rat-core/xref/org/apache/rat/report/claim/impl/xml/SimpleXmlClaimReporter.html
+++ b/rat0161/apache-rat-core/xref/org/apache/rat/report/claim/impl/xml/SimpleXmlClaimReporter.html
@@ -32,127 +32,128 @@
 <a class="jxr_linenumber" name="L24" href="#L24">24</a>  <strong class="jxr_keyword">import</strong> org.apache.rat.api.RatException;
 <a class="jxr_linenumber" name="L25" href="#L25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.rat.report.AbstractReport;
 <a class="jxr_linenumber" name="L26" href="#L26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.rat.report.xml.writer.IXmlWriter;
-<a class="jxr_linenumber" name="L27" href="#L27">27</a>  
-<a class="jxr_linenumber" name="L28" href="#L28">28</a>  <strong class="jxr_keyword">import</strong> java.io.IOException;
-<a class="jxr_linenumber" name="L29" href="#L29">29</a>  <strong class="jxr_keyword">import</strong> java.util.Calendar;
-<a class="jxr_linenumber" name="L30" href="#L30">30</a>  
-<a class="jxr_linenumber" name="L31" href="#L31">31</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a name="SimpleXmlClaimReporter" href="../../../../../../../org/apache/rat/report/claim/impl/xml/SimpleXmlClaimReporter.html#SimpleXmlClaimReporter">SimpleXmlClaimReporter</a> <strong class="jxr_keyword">extends</strong> <a name="AbstractReport" href="../../../../../../../org/apache/rat/report/AbstractReport.html#AbstractReport">AbstractReport</a> {
-<a class="jxr_linenumber" name="L32" href="#L32">32</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String RAT_REPORT = <span class="jxr_string">"rat-report"</span>;
-<a class="jxr_linenumber" name="L33" href="#L33">33</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String TIMESTAMP = <span class="jxr_string">"timestamp"</span>;
-<a class="jxr_linenumber" name="L34" href="#L34">34</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String LICENSE_APPROVAL_PREDICATE = <span class="jxr_string">"license-approval"</span>;
-<a class="jxr_linenumber" name="L35" href="#L35">35</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String LICENSE_FAMILY_PREDICATE = <span class="jxr_string">"license-family"</span>;
-<a class="jxr_linenumber" name="L36" href="#L36">36</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String HEADER_SAMPLE_PREDICATE = <span class="jxr_string">"header-sample"</span>;
-<a class="jxr_linenumber" name="L37" href="#L37">37</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String HEADER_TYPE_PREDICATE = <span class="jxr_string">"header-type"</span>;
-<a class="jxr_linenumber" name="L38" href="#L38">38</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String FILE_TYPE_PREDICATE = <span class="jxr_string">"type"</span>;
-<a class="jxr_linenumber" name="L39" href="#L39">39</a>  
-<a class="jxr_linenumber" name="L40" href="#L40">40</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a name="IXmlWriter" href="../../../../../../../org/apache/rat/report/xml/writer/IXmlWriter.html#IXmlWriter">IXmlWriter</a> writer;
-<a class="jxr_linenumber" name="L41" href="#L41">41</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String NAME = <span class="jxr_string">"name"</span>;
-<a class="jxr_linenumber" name="L42" href="#L42">42</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> firstTime = <strong class="jxr_keyword">true</strong>;
-<a class="jxr_linenumber" name="L43" href="#L43">43</a>  
-<a class="jxr_linenumber" name="L44" href="#L44">44</a>      <strong class="jxr_keyword">public</strong> <a name="SimpleXmlClaimReporter" href="../../../../../../../org/apache/rat/report/claim/impl/xml/SimpleXmlClaimReporter.html#SimpleXmlClaimReporter">SimpleXmlClaimReporter</a>(<strong class="jxr_keyword">final</strong> <a name="IXmlWriter" href="../../../../../../../org/apache/rat/report/xml/writer/IXmlWriter.html#IXmlWriter">IXmlWriter</a> writer) {
-<a class="jxr_linenumber" name="L45" href="#L45">45</a>          <strong class="jxr_keyword">this</strong>.writer = writer;
-<a class="jxr_linenumber" name="L46" href="#L46">46</a>      }
-<a class="jxr_linenumber" name="L47" href="#L47">47</a>  
+<a class="jxr_linenumber" name="L27" href="#L27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.rat.report.xml.writer.impl.base.XmlWriter;
+<a class="jxr_linenumber" name="L28" href="#L28">28</a>  
+<a class="jxr_linenumber" name="L29" href="#L29">29</a>  <strong class="jxr_keyword">import</strong> java.io.IOException;
+<a class="jxr_linenumber" name="L30" href="#L30">30</a>  <strong class="jxr_keyword">import</strong> java.util.Calendar;
+<a class="jxr_linenumber" name="L31" href="#L31">31</a>  
+<a class="jxr_linenumber" name="L32" href="#L32">32</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a name="SimpleXmlClaimReporter" href="../../../../../../../org/apache/rat/report/claim/impl/xml/SimpleXmlClaimReporter.html#SimpleXmlClaimReporter">SimpleXmlClaimReporter</a> <strong class="jxr_keyword">extends</strong> <a name="AbstractReport" href="../../../../../../../org/apache/rat/report/AbstractReport.html#AbstractReport">AbstractReport</a> {
+<a class="jxr_linenumber" name="L33" href="#L33">33</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String RAT_REPORT = <span class="jxr_string">"rat-report"</span>;
+<a class="jxr_linenumber" name="L34" href="#L34">34</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String TIMESTAMP = <span class="jxr_string">"timestamp"</span>;
+<a class="jxr_linenumber" name="L35" href="#L35">35</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String LICENSE_APPROVAL_PREDICATE = <span class="jxr_string">"license-approval"</span>;
+<a class="jxr_linenumber" name="L36" href="#L36">36</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String LICENSE_FAMILY_PREDICATE = <span class="jxr_string">"license-family"</span>;
+<a class="jxr_linenumber" name="L37" href="#L37">37</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String HEADER_SAMPLE_PREDICATE = <span class="jxr_string">"header-sample"</span>;
+<a class="jxr_linenumber" name="L38" href="#L38">38</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String HEADER_TYPE_PREDICATE = <span class="jxr_string">"header-type"</span>;
+<a class="jxr_linenumber" name="L39" href="#L39">39</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String FILE_TYPE_PREDICATE = <span class="jxr_string">"type"</span>;
+<a class="jxr_linenumber" name="L40" href="#L40">40</a>  
+<a class="jxr_linenumber" name="L41" href="#L41">41</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a name="IXmlWriter" href="../../../../../../../org/apache/rat/report/xml/writer/IXmlWriter.html#IXmlWriter">IXmlWriter</a> writer;
+<a class="jxr_linenumber" name="L42" href="#L42">42</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String NAME = <span class="jxr_string">"name"</span>;
+<a class="jxr_linenumber" name="L43" href="#L43">43</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> firstTime = <strong class="jxr_keyword">true</strong>;
+<a class="jxr_linenumber" name="L44" href="#L44">44</a>  
+<a class="jxr_linenumber" name="L45" href="#L45">45</a>      <strong class="jxr_keyword">public</strong> <a name="SimpleXmlClaimReporter" href="../../../../../../../org/apache/rat/report/claim/impl/xml/SimpleXmlClaimReporter.html#SimpleXmlClaimReporter">SimpleXmlClaimReporter</a>(<strong class="jxr_keyword">final</strong> <a name="IXmlWriter" href="../../../../../../../org/apache/rat/report/xml/writer/IXmlWriter.html#IXmlWriter">IXmlWriter</a> writer) {
+<a class="jxr_linenumber" name="L46" href="#L46">46</a>          <strong class="jxr_keyword">this</strong>.writer = writer;
+<a class="jxr_linenumber" name="L47" href="#L47">47</a>      }
 <a class="jxr_linenumber" name="L48" href="#L48">48</a>  
-<a class="jxr_linenumber" name="L49" href="#L49">49</a>      <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L50" href="#L50">50</a>  <em class="jxr_javadoccomment">     * Writes a single claim to the XML file.</em>
-<a class="jxr_linenumber" name="L51" href="#L51">51</a>  <em class="jxr_javadoccomment">     * @param pPredicate The claims predicate.</em>
-<a class="jxr_linenumber" name="L52" href="#L52">52</a>  <em class="jxr_javadoccomment">     * @param pObject The claims object.</em>
-<a class="jxr_linenumber" name="L53" href="#L53">53</a>  <em class="jxr_javadoccomment">     * @param pLiteral Whether to write the object as an element (true),</em>
-<a class="jxr_linenumber" name="L54" href="#L54">54</a>  <em class="jxr_javadoccomment">     *   or an attribute (false).</em>
-<a class="jxr_linenumber" name="L55" href="#L55">55</a>  <em class="jxr_javadoccomment">     * @throws IOException An I/O error occurred while writing the claim.</em>
-<a class="jxr_linenumber" name="L56" href="#L56">56</a>  <em class="jxr_javadoccomment">     * @throws RatException Another error occurred while writing the claim.</em>
-<a class="jxr_linenumber" name="L57" href="#L57">57</a>  <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="L58" href="#L58">58</a>      <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">void</strong> writeClaim(String pPredicate, String pObject, <strong class="jxr_keyword">boolean</strong> pLiteral)
-<a class="jxr_linenumber" name="L59" href="#L59">59</a>      <strong class="jxr_keyword">throws</strong> IOException, <a name="RatException" href="../../../../../../../org/apache/rat/api/RatException.html#RatException">RatException</a> {
-<a class="jxr_linenumber" name="L60" href="#L60">60</a>          <strong class="jxr_keyword">if</strong> (pLiteral) {
-<a class="jxr_linenumber" name="L61" href="#L61">61</a>              writer.openElement(pPredicate).content(pObject).closeElement();
-<a class="jxr_linenumber" name="L62" href="#L62">62</a>          } <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="L63" href="#L63">63</a>              writer.openElement(pPredicate).attribute(NAME, pObject).closeElement();
-<a class="jxr_linenumber" name="L64" href="#L64">64</a>          }
-<a class="jxr_linenumber" name="L65" href="#L65">65</a>      }
-<a class="jxr_linenumber" name="L66" href="#L66">66</a>  
-<a class="jxr_linenumber" name="L67" href="#L67">67</a>      @Override
-<a class="jxr_linenumber" name="L68" href="#L68">68</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> report(<strong class="jxr_keyword">final</strong> <a name="Document" href="../../../../../../../org/apache/rat/api/Document.html#Document">Document</a> subject) <strong class="jxr_keyword">throws</strong> <a name="RatException" href="../../../../../../../org/apache/rat/api/RatException.html#RatException">RatException</a> {
-<a class="jxr_linenumber" name="L69" href="#L69">69</a>          <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="L70" href="#L70">70</a>              <strong class="jxr_keyword">if</strong> (firstTime) {
-<a class="jxr_linenumber" name="L71" href="#L71">71</a>                  firstTime = false;
-<a class="jxr_linenumber" name="L72" href="#L72">72</a>              } <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="L73" href="#L73">73</a>                  writer.closeElement();
-<a class="jxr_linenumber" name="L74" href="#L74">74</a>              }
-<a class="jxr_linenumber" name="L75" href="#L75">75</a>              writer.openElement(<span class="jxr_string">"resource"</span>).attribute(NAME, subject.getName());
-<a class="jxr_linenumber" name="L76" href="#L76">76</a>              writeDocumentClaims(subject);
-<a class="jxr_linenumber" name="L77" href="#L77">77</a>          } <strong class="jxr_keyword">catch</strong> (IOException e) {
-<a class="jxr_linenumber" name="L78" href="#L78">78</a>              <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a name="RatException" href="../../../../../../../org/apache/rat/api/RatException.html#RatException">RatException</a>(<span class="jxr_string">"XML writing failure: "</span> + e.getMessage()
-<a class="jxr_linenumber" name="L79" href="#L79">79</a>                      + <span class="jxr_string">" subject: "</span> + subject, e);
-<a class="jxr_linenumber" name="L80" href="#L80">80</a>          }
-<a class="jxr_linenumber" name="L81" href="#L81">81</a>      }
-<a class="jxr_linenumber" name="L82" href="#L82">82</a>  
-<a class="jxr_linenumber" name="L83" href="#L83">83</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> writeDocumentClaims(<strong class="jxr_keyword">final</strong> <a name="Document" href="../../../../../../../org/apache/rat/api/Document.html#Document">Document</a> subject) <strong class="jxr_keyword">throws</strong> IOException, <a name="RatException" href="../../../../../../../org/apache/rat/api/RatException.html#RatException">RatException</a> {
-<a class="jxr_linenumber" name="L84" href="#L84">84</a>          <strong class="jxr_keyword">final</strong> <a name="MetaData" href="../../../../../../../org/apache/rat/api/MetaData.html#MetaData">MetaData</a> metaData = subject.getMetaData();
-<a class="jxr_linenumber" name="L85" href="#L85">85</a>          writeHeaderSample(metaData);
-<a class="jxr_linenumber" name="L86" href="#L86">86</a>          writeHeaderCategory(metaData);
-<a class="jxr_linenumber" name="L87" href="#L87">87</a>          writeLicenseFamilyName(metaData);
-<a class="jxr_linenumber" name="L88" href="#L88">88</a>          writeApprovedLicense(metaData);
-<a class="jxr_linenumber" name="L89" href="#L89">89</a>          writeDocumentCategory(metaData);
-<a class="jxr_linenumber" name="L90" href="#L90">90</a>      }
-<a class="jxr_linenumber" name="L91" href="#L91">91</a>  
-<a class="jxr_linenumber" name="L92" href="#L92">92</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> writeApprovedLicense(<strong class="jxr_keyword">final</strong> <a name="MetaData" href="../../../../../../../org/apache/rat/api/MetaData.html#MetaData">MetaData</a> metaData) <strong class="jxr_keyword">throws</strong> IOException, <a name="RatException" href="../../../../../../../org/apache/rat/api/RatException.html#RatException">RatExcepti [...]
-<a class="jxr_linenumber" name="L93" href="#L93">93</a>          <strong class="jxr_keyword">final</strong> String approvedLicense = metaData.value(MetaData.RAT_URL_APPROVED_LICENSE);
-<a class="jxr_linenumber" name="L94" href="#L94">94</a>          <strong class="jxr_keyword">if</strong> (approvedLicense != <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="L95" href="#L95">95</a>              writeClaim(LICENSE_APPROVAL_PREDICATE, approvedLicense, false);
-<a class="jxr_linenumber" name="L96" href="#L96">96</a>          }
-<a class="jxr_linenumber" name="L97" href="#L97">97</a>      }
-<a class="jxr_linenumber" name="L98" href="#L98">98</a>  
-<a class="jxr_linenumber" name="L99" href="#L99">99</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> writeLicenseFamilyName(<strong class="jxr_keyword">final</strong> <a name="MetaData" href="../../../../../../../org/apache/rat/api/MetaData.html#MetaData">MetaData</a> metaData) <strong class="jxr_keyword">throws</strong> IOException, <a name="RatException" href="../../../../../../../org/apache/rat/api/RatException.html#RatException">RatExcep [...]
-<a class="jxr_linenumber" name="L100" href="#L100">100</a>         <strong class="jxr_keyword">final</strong> String licenseFamilyName = metaData.value(MetaData.RAT_URL_LICENSE_FAMILY_NAME);
-<a class="jxr_linenumber" name="L101" href="#L101">101</a>         <strong class="jxr_keyword">if</strong> (licenseFamilyName != <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="L102" href="#L102">102</a>             writeClaim(LICENSE_FAMILY_PREDICATE, licenseFamilyName, false);
-<a class="jxr_linenumber" name="L103" href="#L103">103</a>         }
-<a class="jxr_linenumber" name="L104" href="#L104">104</a>     }
-<a class="jxr_linenumber" name="L105" href="#L105">105</a> 
-<a class="jxr_linenumber" name="L106" href="#L106">106</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> writeHeaderCategory(<strong class="jxr_keyword">final</strong> <a name="MetaData" href="../../../../../../../org/apache/rat/api/MetaData.html#MetaData">MetaData</a> metaData) <strong class="jxr_keyword">throws</strong> IOException, <a name="RatException" href="../../../../../../../org/apache/rat/api/RatException.html#RatException">RatExcept [...]
-<a class="jxr_linenumber" name="L107" href="#L107">107</a>         <strong class="jxr_keyword">final</strong> String headerCategory = metaData.value(MetaData.RAT_URL_HEADER_CATEGORY);
-<a class="jxr_linenumber" name="L108" href="#L108">108</a>         <strong class="jxr_keyword">if</strong> (headerCategory != <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="L109" href="#L109">109</a>             writeClaim(HEADER_TYPE_PREDICATE, headerCategory, false);
-<a class="jxr_linenumber" name="L110" href="#L110">110</a>         }
-<a class="jxr_linenumber" name="L111" href="#L111">111</a>     }
-<a class="jxr_linenumber" name="L112" href="#L112">112</a> 
-<a class="jxr_linenumber" name="L113" href="#L113">113</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> writeHeaderSample(<strong class="jxr_keyword">final</strong> <a name="MetaData" href="../../../../../../../org/apache/rat/api/MetaData.html#MetaData">MetaData</a> metaData) <strong class="jxr_keyword">throws</strong> IOException, <a name="RatException" href="../../../../../../../org/apache/rat/api/RatException.html#RatException">RatException</a> {
-<a class="jxr_linenumber" name="L114" href="#L114">114</a>         <strong class="jxr_keyword">final</strong> String sample = metaData.value(MetaData.RAT_URL_HEADER_SAMPLE);
-<a class="jxr_linenumber" name="L115" href="#L115">115</a>         <strong class="jxr_keyword">if</strong> (sample != <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="L116" href="#L116">116</a>             writeClaim(HEADER_SAMPLE_PREDICATE, sample, <strong class="jxr_keyword">true</strong>);
-<a class="jxr_linenumber" name="L117" href="#L117">117</a>         }
-<a class="jxr_linenumber" name="L118" href="#L118">118</a>     }
-<a class="jxr_linenumber" name="L119" href="#L119">119</a> 
-<a class="jxr_linenumber" name="L120" href="#L120">120</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> writeDocumentCategory(<strong class="jxr_keyword">final</strong> <a name="MetaData" href="../../../../../../../org/apache/rat/api/MetaData.html#MetaData">MetaData</a> metaData) <strong class="jxr_keyword">throws</strong> IOException, <a name="RatException" href="../../../../../../../org/apache/rat/api/RatException.html#RatException">RatExce [...]
-<a class="jxr_linenumber" name="L121" href="#L121">121</a>         <strong class="jxr_keyword">final</strong> String documentCategory = metaData.value(MetaData.RAT_URL_DOCUMENT_CATEGORY);
-<a class="jxr_linenumber" name="L122" href="#L122">122</a>         <strong class="jxr_keyword">if</strong> (documentCategory != <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="L123" href="#L123">123</a>             writeClaim(FILE_TYPE_PREDICATE, documentCategory, false);
-<a class="jxr_linenumber" name="L124" href="#L124">124</a>         }
-<a class="jxr_linenumber" name="L125" href="#L125">125</a>     }
-<a class="jxr_linenumber" name="L126" href="#L126">126</a> 
-<a class="jxr_linenumber" name="L127" href="#L127">127</a>     @Override
-<a class="jxr_linenumber" name="L128" href="#L128">128</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> startReport() <strong class="jxr_keyword">throws</strong> <a name="RatException" href="../../../../../../../org/apache/rat/api/RatException.html#RatException">RatException</a> {
-<a class="jxr_linenumber" name="L129" href="#L129">129</a>         <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="L130" href="#L130">130</a>             writer.openElement(RAT_REPORT)
-<a class="jxr_linenumber" name="L131" href="#L131">131</a>                 .attribute(TIMESTAMP,
-<a class="jxr_linenumber" name="L132" href="#L132">132</a>                            DateFormatUtils.ISO_8601_EXTENDED_DATETIME_TIME_ZONE_FORMAT
-<a class="jxr_linenumber" name="L133" href="#L133">133</a>                            .format(Calendar.getInstance()));
-<a class="jxr_linenumber" name="L134" href="#L134">134</a>         } <strong class="jxr_keyword">catch</strong> (IOException e) {
-<a class="jxr_linenumber" name="L135" href="#L135">135</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a name="RatException" href="../../../../../../../org/apache/rat/api/RatException.html#RatException">RatException</a>(<span class="jxr_string">"Cannot open start element"</span>, e);
-<a class="jxr_linenumber" name="L136" href="#L136">136</a>         }
-<a class="jxr_linenumber" name="L137" href="#L137">137</a>     }
-<a class="jxr_linenumber" name="L138" href="#L138">138</a> 
-<a class="jxr_linenumber" name="L139" href="#L139">139</a>     @Override
-<a class="jxr_linenumber" name="L140" href="#L140">140</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> endReport() <strong class="jxr_keyword">throws</strong> <a name="RatException" href="../../../../../../../org/apache/rat/api/RatException.html#RatException">RatException</a> {
-<a class="jxr_linenumber" name="L141" href="#L141">141</a>         <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="L142" href="#L142">142</a>             writer.closeDocument();
-<a class="jxr_linenumber" name="L143" href="#L143">143</a>         } <strong class="jxr_keyword">catch</strong> (IOException e) {
-<a class="jxr_linenumber" name="L144" href="#L144">144</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a name="RatException" href="../../../../../../../org/apache/rat/api/RatException.html#RatException">RatException</a>(<span class="jxr_string">"Cannot close last element"</span>, e);
-<a class="jxr_linenumber" name="L145" href="#L145">145</a>         }
-<a class="jxr_linenumber" name="L146" href="#L146">146</a>     }
-<a class="jxr_linenumber" name="L147" href="#L147">147</a> }
+<a class="jxr_linenumber" name="L49" href="#L49">49</a>  
+<a class="jxr_linenumber" name="L50" href="#L50">50</a>      <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L51" href="#L51">51</a>  <em class="jxr_javadoccomment">     * Writes a single claim to the XML file.</em>
+<a class="jxr_linenumber" name="L52" href="#L52">52</a>  <em class="jxr_javadoccomment">     * @param pPredicate The claims predicate.</em>
+<a class="jxr_linenumber" name="L53" href="#L53">53</a>  <em class="jxr_javadoccomment">     * @param pObject The claims object.</em>
+<a class="jxr_linenumber" name="L54" href="#L54">54</a>  <em class="jxr_javadoccomment">     * @param pLiteral Whether to write the object as an element (true),</em>
+<a class="jxr_linenumber" name="L55" href="#L55">55</a>  <em class="jxr_javadoccomment">     *   or an attribute (false).</em>
+<a class="jxr_linenumber" name="L56" href="#L56">56</a>  <em class="jxr_javadoccomment">     * @throws IOException An I/O error occurred while writing the claim.</em>
+<a class="jxr_linenumber" name="L57" href="#L57">57</a>  <em class="jxr_javadoccomment">     * @throws RatException Another error occurred while writing the claim.</em>
+<a class="jxr_linenumber" name="L58" href="#L58">58</a>  <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="L59" href="#L59">59</a>      <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">void</strong> writeClaim(String pPredicate, String pObject, <strong class="jxr_keyword">boolean</strong> pLiteral)
+<a class="jxr_linenumber" name="L60" href="#L60">60</a>      <strong class="jxr_keyword">throws</strong> IOException, <a name="RatException" href="../../../../../../../org/apache/rat/api/RatException.html#RatException">RatException</a> {
+<a class="jxr_linenumber" name="L61" href="#L61">61</a>          <strong class="jxr_keyword">if</strong> (pLiteral) {
+<a class="jxr_linenumber" name="L62" href="#L62">62</a>              writer.openElement(pPredicate).content(pObject).closeElement();
+<a class="jxr_linenumber" name="L63" href="#L63">63</a>          } <strong class="jxr_keyword">else</strong> {
+<a class="jxr_linenumber" name="L64" href="#L64">64</a>              writer.openElement(pPredicate).attribute(NAME, pObject).closeElement();
+<a class="jxr_linenumber" name="L65" href="#L65">65</a>          }
+<a class="jxr_linenumber" name="L66" href="#L66">66</a>      }
+<a class="jxr_linenumber" name="L67" href="#L67">67</a>  
+<a class="jxr_linenumber" name="L68" href="#L68">68</a>      @Override
+<a class="jxr_linenumber" name="L69" href="#L69">69</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> report(<strong class="jxr_keyword">final</strong> <a name="Document" href="../../../../../../../org/apache/rat/api/Document.html#Document">Document</a> subject) <strong class="jxr_keyword">throws</strong> <a name="RatException" href="../../../../../../../org/apache/rat/api/RatException.html#RatException">RatException</a> {
+<a class="jxr_linenumber" name="L70" href="#L70">70</a>          <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="L71" href="#L71">71</a>              <strong class="jxr_keyword">if</strong> (firstTime) {
+<a class="jxr_linenumber" name="L72" href="#L72">72</a>                  firstTime = false;
+<a class="jxr_linenumber" name="L73" href="#L73">73</a>              } <strong class="jxr_keyword">else</strong> {
+<a class="jxr_linenumber" name="L74" href="#L74">74</a>                  writer.closeElement();
+<a class="jxr_linenumber" name="L75" href="#L75">75</a>              }
+<a class="jxr_linenumber" name="L76" href="#L76">76</a>              writer.openElement(<span class="jxr_string">"resource"</span>).attribute(NAME, subject.getName());
+<a class="jxr_linenumber" name="L77" href="#L77">77</a>              writeDocumentClaims(subject);
+<a class="jxr_linenumber" name="L78" href="#L78">78</a>          } <strong class="jxr_keyword">catch</strong> (IOException e) {
+<a class="jxr_linenumber" name="L79" href="#L79">79</a>              <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a name="RatException" href="../../../../../../../org/apache/rat/api/RatException.html#RatException">RatException</a>(<span class="jxr_string">"XML writing failure: "</span> + e.getMessage()
+<a class="jxr_linenumber" name="L80" href="#L80">80</a>                      + <span class="jxr_string">" subject: "</span> + subject, e);
+<a class="jxr_linenumber" name="L81" href="#L81">81</a>          }
+<a class="jxr_linenumber" name="L82" href="#L82">82</a>      }
+<a class="jxr_linenumber" name="L83" href="#L83">83</a>  
+<a class="jxr_linenumber" name="L84" href="#L84">84</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> writeDocumentClaims(<strong class="jxr_keyword">final</strong> <a name="Document" href="../../../../../../../org/apache/rat/api/Document.html#Document">Document</a> subject) <strong class="jxr_keyword">throws</strong> IOException, <a name="RatException" href="../../../../../../../org/apache/rat/api/RatException.html#RatException">RatException</a> {
+<a class="jxr_linenumber" name="L85" href="#L85">85</a>          <strong class="jxr_keyword">final</strong> <a name="MetaData" href="../../../../../../../org/apache/rat/api/MetaData.html#MetaData">MetaData</a> metaData = subject.getMetaData();
+<a class="jxr_linenumber" name="L86" href="#L86">86</a>          writeHeaderSample(metaData);
+<a class="jxr_linenumber" name="L87" href="#L87">87</a>          writeHeaderCategory(metaData);
+<a class="jxr_linenumber" name="L88" href="#L88">88</a>          writeLicenseFamilyName(metaData);
+<a class="jxr_linenumber" name="L89" href="#L89">89</a>          writeApprovedLicense(metaData);
+<a class="jxr_linenumber" name="L90" href="#L90">90</a>          writeDocumentCategory(metaData);
+<a class="jxr_linenumber" name="L91" href="#L91">91</a>      }
+<a class="jxr_linenumber" name="L92" href="#L92">92</a>  
+<a class="jxr_linenumber" name="L93" href="#L93">93</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> writeApprovedLicense(<strong class="jxr_keyword">final</strong> <a name="MetaData" href="../../../../../../../org/apache/rat/api/MetaData.html#MetaData">MetaData</a> metaData) <strong class="jxr_keyword">throws</strong> IOException, <a name="RatException" href="../../../../../../../org/apache/rat/api/RatException.html#RatException">RatExcepti [...]
+<a class="jxr_linenumber" name="L94" href="#L94">94</a>          <strong class="jxr_keyword">final</strong> String approvedLicense = metaData.value(MetaData.RAT_URL_APPROVED_LICENSE);
+<a class="jxr_linenumber" name="L95" href="#L95">95</a>          <strong class="jxr_keyword">if</strong> (approvedLicense != <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="L96" href="#L96">96</a>              writeClaim(LICENSE_APPROVAL_PREDICATE, approvedLicense, false);
+<a class="jxr_linenumber" name="L97" href="#L97">97</a>          }
+<a class="jxr_linenumber" name="L98" href="#L98">98</a>      }
+<a class="jxr_linenumber" name="L99" href="#L99">99</a>  
+<a class="jxr_linenumber" name="L100" href="#L100">100</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> writeLicenseFamilyName(<strong class="jxr_keyword">final</strong> <a name="MetaData" href="../../../../../../../org/apache/rat/api/MetaData.html#MetaData">MetaData</a> metaData) <strong class="jxr_keyword">throws</strong> IOException, <a name="RatException" href="../../../../../../../org/apache/rat/api/RatException.html#RatException">RatExc [...]
+<a class="jxr_linenumber" name="L101" href="#L101">101</a>         <strong class="jxr_keyword">final</strong> String licenseFamilyName = metaData.value(MetaData.RAT_URL_LICENSE_FAMILY_NAME);
+<a class="jxr_linenumber" name="L102" href="#L102">102</a>         <strong class="jxr_keyword">if</strong> (licenseFamilyName != <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="L103" href="#L103">103</a>             writeClaim(LICENSE_FAMILY_PREDICATE, licenseFamilyName, false);
+<a class="jxr_linenumber" name="L104" href="#L104">104</a>         }
+<a class="jxr_linenumber" name="L105" href="#L105">105</a>     }
+<a class="jxr_linenumber" name="L106" href="#L106">106</a> 
+<a class="jxr_linenumber" name="L107" href="#L107">107</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> writeHeaderCategory(<strong class="jxr_keyword">final</strong> <a name="MetaData" href="../../../../../../../org/apache/rat/api/MetaData.html#MetaData">MetaData</a> metaData) <strong class="jxr_keyword">throws</strong> IOException, <a name="RatException" href="../../../../../../../org/apache/rat/api/RatException.html#RatException">RatExcept [...]
+<a class="jxr_linenumber" name="L108" href="#L108">108</a>         <strong class="jxr_keyword">final</strong> String headerCategory = metaData.value(MetaData.RAT_URL_HEADER_CATEGORY);
+<a class="jxr_linenumber" name="L109" href="#L109">109</a>         <strong class="jxr_keyword">if</strong> (headerCategory != <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="L110" href="#L110">110</a>             writeClaim(HEADER_TYPE_PREDICATE, headerCategory, false);
+<a class="jxr_linenumber" name="L111" href="#L111">111</a>         }
+<a class="jxr_linenumber" name="L112" href="#L112">112</a>     }
+<a class="jxr_linenumber" name="L113" href="#L113">113</a> 
+<a class="jxr_linenumber" name="L114" href="#L114">114</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> writeHeaderSample(<strong class="jxr_keyword">final</strong> <a name="MetaData" href="../../../../../../../org/apache/rat/api/MetaData.html#MetaData">MetaData</a> metaData) <strong class="jxr_keyword">throws</strong> IOException, <a name="RatException" href="../../../../../../../org/apache/rat/api/RatException.html#RatException">RatException</a> {
+<a class="jxr_linenumber" name="L115" href="#L115">115</a>         <strong class="jxr_keyword">final</strong> String sample = metaData.value(MetaData.RAT_URL_HEADER_SAMPLE);
+<a class="jxr_linenumber" name="L116" href="#L116">116</a>         <strong class="jxr_keyword">if</strong> (sample != <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="L117" href="#L117">117</a>             writeClaim(HEADER_SAMPLE_PREDICATE, sample, <strong class="jxr_keyword">true</strong>);
+<a class="jxr_linenumber" name="L118" href="#L118">118</a>         }
+<a class="jxr_linenumber" name="L119" href="#L119">119</a>     }
+<a class="jxr_linenumber" name="L120" href="#L120">120</a> 
+<a class="jxr_linenumber" name="L121" href="#L121">121</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> writeDocumentCategory(<strong class="jxr_keyword">final</strong> <a name="MetaData" href="../../../../../../../org/apache/rat/api/MetaData.html#MetaData">MetaData</a> metaData) <strong class="jxr_keyword">throws</strong> IOException, <a name="RatException" href="../../../../../../../org/apache/rat/api/RatException.html#RatException">RatExce [...]
+<a class="jxr_linenumber" name="L122" href="#L122">122</a>         <strong class="jxr_keyword">final</strong> String documentCategory = metaData.value(MetaData.RAT_URL_DOCUMENT_CATEGORY);
+<a class="jxr_linenumber" name="L123" href="#L123">123</a>         <strong class="jxr_keyword">if</strong> (documentCategory != <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="L124" href="#L124">124</a>             writeClaim(FILE_TYPE_PREDICATE, documentCategory, false);
+<a class="jxr_linenumber" name="L125" href="#L125">125</a>         }
+<a class="jxr_linenumber" name="L126" href="#L126">126</a>     }
+<a class="jxr_linenumber" name="L127" href="#L127">127</a> 
+<a class="jxr_linenumber" name="L128" href="#L128">128</a>     @Override
+<a class="jxr_linenumber" name="L129" href="#L129">129</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> startReport() <strong class="jxr_keyword">throws</strong> <a name="RatException" href="../../../../../../../org/apache/rat/api/RatException.html#RatException">RatException</a> {
+<a class="jxr_linenumber" name="L130" href="#L130">130</a>         <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="L131" href="#L131">131</a>             writer.openElement(RAT_REPORT)
+<a class="jxr_linenumber" name="L132" href="#L132">132</a>                 .attribute(TIMESTAMP,
+<a class="jxr_linenumber" name="L133" href="#L133">133</a>                            DateFormatUtils.ISO_8601_EXTENDED_DATETIME_TIME_ZONE_FORMAT
+<a class="jxr_linenumber" name="L134" href="#L134">134</a>                            .format(Calendar.getInstance()));
+<a class="jxr_linenumber" name="L135" href="#L135">135</a>         } <strong class="jxr_keyword">catch</strong> (IOException e) {
+<a class="jxr_linenumber" name="L136" href="#L136">136</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a name="RatException" href="../../../../../../../org/apache/rat/api/RatException.html#RatException">RatException</a>(<span class="jxr_string">"Cannot open start element"</span>, e);
+<a class="jxr_linenumber" name="L137" href="#L137">137</a>         }
+<a class="jxr_linenumber" name="L138" href="#L138">138</a>     }
+<a class="jxr_linenumber" name="L139" href="#L139">139</a> 
+<a class="jxr_linenumber" name="L140" href="#L140">140</a>     @Override
+<a class="jxr_linenumber" name="L141" href="#L141">141</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> endReport() <strong class="jxr_keyword">throws</strong> <a name="RatException" href="../../../../../../../org/apache/rat/api/RatException.html#RatException">RatException</a> {
+<a class="jxr_linenumber" name="L142" href="#L142">142</a>         <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="L143" href="#L143">143</a>             writer.closeDocument();
+<a class="jxr_linenumber" name="L144" href="#L144">144</a>         } <strong class="jxr_keyword">catch</strong> (IOException e) {
+<a class="jxr_linenumber" name="L145" href="#L145">145</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a name="RatException" href="../../../../../../../org/apache/rat/api/RatException.html#RatException">RatException</a>(<span class="jxr_string">"Cannot close last element"</span>, e);
+<a class="jxr_linenumber" name="L146" href="#L146">146</a>         }
+<a class="jxr_linenumber" name="L147" href="#L147">147</a>     }
+<a class="jxr_linenumber" name="L148" href="#L148">148</a> }
 </pre>
 <hr/>
 <div id="footer">Copyright &#169; 2006&#x2013;2024 <a href="https://www.apache.org">Apache Software Foundation</a>. All rights reserved.</div>
diff --git a/rat0161/apache-rat-core/xref/org/apache/rat/report/claim/util/LicenseAddingReport.html b/rat0161/apache-rat-core/xref/org/apache/rat/report/claim/util/LicenseAddingReport.html
index 20c7d3df..cec137b9 100644
--- a/rat0161/apache-rat-core/xref/org/apache/rat/report/claim/util/LicenseAddingReport.html
+++ b/rat0161/apache-rat-core/xref/org/apache/rat/report/claim/util/LicenseAddingReport.html
@@ -35,32 +35,33 @@
 <a class="jxr_linenumber" name="L27" href="#L27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.rat.api.MetaData.Datum;
 <a class="jxr_linenumber" name="L28" href="#L28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.rat.api.RatException;
 <a class="jxr_linenumber" name="L29" href="#L29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.rat.report.AbstractReport;
-<a class="jxr_linenumber" name="L30" href="#L30">30</a>  
+<a class="jxr_linenumber" name="L30" href="#L30">30</a>  <strong class="jxr_keyword">import</strong> org.apache.rat.utils.Log;
 <a class="jxr_linenumber" name="L31" href="#L31">31</a>  
-<a class="jxr_linenumber" name="L32" href="#L32">32</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a name="LicenseAddingReport" href="../../../../../../org/apache/rat/report/claim/util/LicenseAddingReport.html#LicenseAddingReport">LicenseAddingReport</a> <strong class="jxr_keyword">extends</strong> <a name="AbstractReport" href="../../../../../../org/apache/rat/report/AbstractReport.html#AbstractReport">AbstractReport</a> {
-<a class="jxr_linenumber" name="L33" href="#L33">33</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a name="AbstractLicenseAppender" href="../../../../../../org/apache/rat/annotation/AbstractLicenseAppender.html#AbstractLicenseAppender">AbstractLicenseAppender</a> appender;
-<a class="jxr_linenumber" name="L34" href="#L34">34</a>  
-<a class="jxr_linenumber" name="L35" href="#L35">35</a>      <strong class="jxr_keyword">public</strong> <a name="LicenseAddingReport" href="../../../../../../org/apache/rat/report/claim/util/LicenseAddingReport.html#LicenseAddingReport">LicenseAddingReport</a>(String pCopyrightMsg, <strong class="jxr_keyword">boolean</strong> pForced) {
-<a class="jxr_linenumber" name="L36" href="#L36">36</a>          appender = pCopyrightMsg == <strong class="jxr_keyword">null</strong> ? <strong class="jxr_keyword">new</strong> <a name="ApacheV2LicenseAppender" href="../../../../../../org/apache/rat/annotation/ApacheV2LicenseAppender.html#ApacheV2LicenseAppender">ApacheV2LicenseAppender</a>() : <strong class="jxr_keyword">new</strong> <a name="ApacheV2LicenseAppender" href="../../../../../../org/apache/rat/annotation/ApacheV2LicenseAppe [...]
-<a class="jxr_linenumber" name="L37" href="#L37">37</a>          appender.setForce(pForced);
-<a class="jxr_linenumber" name="L38" href="#L38">38</a>      }
-<a class="jxr_linenumber" name="L39" href="#L39">39</a>  
-<a class="jxr_linenumber" name="L40" href="#L40">40</a>      @Override
-<a class="jxr_linenumber" name="L41" href="#L41">41</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> report(org.apache.rat.api.Document document) <strong class="jxr_keyword">throws</strong> <a name="RatException" href="../../../../../../org/apache/rat/api/RatException.html#RatException">RatException</a> {
-<a class="jxr_linenumber" name="L42" href="#L42">42</a>          <strong class="jxr_keyword">final</strong> Datum licenseHeader = document.getMetaData().get(MetaData.RAT_URL_HEADER_CATEGORY);
-<a class="jxr_linenumber" name="L43" href="#L43">43</a>          <strong class="jxr_keyword">if</strong> (licenseHeader == <strong class="jxr_keyword">null</strong>
-<a class="jxr_linenumber" name="L44" href="#L44">44</a>                  ||  MetaData.RAT_LICENSE_FAMILY_CATEGORY_DATUM_UNKNOWN.getValue().equals(licenseHeader.getValue())) {
-<a class="jxr_linenumber" name="L45" href="#L45">45</a>              <strong class="jxr_keyword">final</strong> File file = <strong class="jxr_keyword">new</strong> File(document.getName());
-<a class="jxr_linenumber" name="L46" href="#L46">46</a>              <strong class="jxr_keyword">if</strong> (file.isFile()) {
-<a class="jxr_linenumber" name="L47" href="#L47">47</a>                  <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="L48" href="#L48">48</a>                      appender.append(file);
-<a class="jxr_linenumber" name="L49" href="#L49">49</a>                  } <strong class="jxr_keyword">catch</strong> (IOException e) {
-<a class="jxr_linenumber" name="L50" href="#L50">50</a>                      <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a name="RatException" href="../../../../../../org/apache/rat/api/RatException.html#RatException">RatException</a>(e.getMessage(), e);
-<a class="jxr_linenumber" name="L51" href="#L51">51</a>                  }
-<a class="jxr_linenumber" name="L52" href="#L52">52</a>              }
-<a class="jxr_linenumber" name="L53" href="#L53">53</a>          }
-<a class="jxr_linenumber" name="L54" href="#L54">54</a>      }
-<a class="jxr_linenumber" name="L55" href="#L55">55</a>  }
+<a class="jxr_linenumber" name="L32" href="#L32">32</a>  
+<a class="jxr_linenumber" name="L33" href="#L33">33</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a name="LicenseAddingReport" href="../../../../../../org/apache/rat/report/claim/util/LicenseAddingReport.html#LicenseAddingReport">LicenseAddingReport</a> <strong class="jxr_keyword">extends</strong> <a name="AbstractReport" href="../../../../../../org/apache/rat/report/AbstractReport.html#AbstractReport">AbstractReport</a> {
+<a class="jxr_linenumber" name="L34" href="#L34">34</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a name="AbstractLicenseAppender" href="../../../../../../org/apache/rat/annotation/AbstractLicenseAppender.html#AbstractLicenseAppender">AbstractLicenseAppender</a> appender;
+<a class="jxr_linenumber" name="L35" href="#L35">35</a>  
+<a class="jxr_linenumber" name="L36" href="#L36">36</a>      <strong class="jxr_keyword">public</strong> <a name="LicenseAddingReport" href="../../../../../../org/apache/rat/report/claim/util/LicenseAddingReport.html#LicenseAddingReport">LicenseAddingReport</a>(<strong class="jxr_keyword">final</strong> <a name="Log" href="../../../../../../org/apache/rat/utils/Log.html#Log">Log</a> log, String pCopyrightMsg, <strong class="jxr_keyword">boolean</strong> pForced) {
+<a class="jxr_linenumber" name="L37" href="#L37">37</a>          appender = pCopyrightMsg == <strong class="jxr_keyword">null</strong> ? <strong class="jxr_keyword">new</strong> <a name="ApacheV2LicenseAppender" href="../../../../../../org/apache/rat/annotation/ApacheV2LicenseAppender.html#ApacheV2LicenseAppender">ApacheV2LicenseAppender</a>(log) : <strong class="jxr_keyword">new</strong> <a name="ApacheV2LicenseAppender" href="../../../../../../org/apache/rat/annotation/ApacheV2LicenseA [...]
+<a class="jxr_linenumber" name="L38" href="#L38">38</a>          appender.setForce(pForced);
+<a class="jxr_linenumber" name="L39" href="#L39">39</a>      }
+<a class="jxr_linenumber" name="L40" href="#L40">40</a>  
+<a class="jxr_linenumber" name="L41" href="#L41">41</a>      @Override
+<a class="jxr_linenumber" name="L42" href="#L42">42</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> report(org.apache.rat.api.Document document) <strong class="jxr_keyword">throws</strong> <a name="RatException" href="../../../../../../org/apache/rat/api/RatException.html#RatException">RatException</a> {
+<a class="jxr_linenumber" name="L43" href="#L43">43</a>          <strong class="jxr_keyword">final</strong> Datum licenseHeader = document.getMetaData().get(MetaData.RAT_URL_HEADER_CATEGORY);
+<a class="jxr_linenumber" name="L44" href="#L44">44</a>          <strong class="jxr_keyword">if</strong> (licenseHeader == <strong class="jxr_keyword">null</strong>
+<a class="jxr_linenumber" name="L45" href="#L45">45</a>                  ||  MetaData.RAT_LICENSE_FAMILY_CATEGORY_DATUM_UNKNOWN.getValue().equals(licenseHeader.getValue())) {
+<a class="jxr_linenumber" name="L46" href="#L46">46</a>              <strong class="jxr_keyword">final</strong> File file = <strong class="jxr_keyword">new</strong> File(document.getName());
+<a class="jxr_linenumber" name="L47" href="#L47">47</a>              <strong class="jxr_keyword">if</strong> (file.isFile()) {
+<a class="jxr_linenumber" name="L48" href="#L48">48</a>                  <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="L49" href="#L49">49</a>                      appender.append(file);
+<a class="jxr_linenumber" name="L50" href="#L50">50</a>                  } <strong class="jxr_keyword">catch</strong> (IOException e) {
+<a class="jxr_linenumber" name="L51" href="#L51">51</a>                      <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a name="RatException" href="../../../../../../org/apache/rat/api/RatException.html#RatException">RatException</a>(e.getMessage(), e);
+<a class="jxr_linenumber" name="L52" href="#L52">52</a>                  }
+<a class="jxr_linenumber" name="L53" href="#L53">53</a>              }
+<a class="jxr_linenumber" name="L54" href="#L54">54</a>          }
+<a class="jxr_linenumber" name="L55" href="#L55">55</a>      }
+<a class="jxr_linenumber" name="L56" href="#L56">56</a>  }
 </pre>
 <hr/>
 <div id="footer">Copyright &#169; 2006&#x2013;2024 <a href="https://www.apache.org">Apache Software Foundation</a>. All rights reserved.</div>
diff --git a/rat0161/apache-rat-core/xref/org/apache/rat/report/xml/XmlReportFactory.html b/rat0161/apache-rat-core/xref/org/apache/rat/report/xml/XmlReportFactory.html
index 31def105..81194a2c 100644
--- a/rat0161/apache-rat-core/xref/org/apache/rat/report/xml/XmlReportFactory.html
+++ b/rat0161/apache-rat-core/xref/org/apache/rat/report/xml/XmlReportFactory.html
@@ -64,12 +64,12 @@
 <a class="jxr_linenumber" name="L56" href="#L56">56</a>              reporters.add(<strong class="jxr_keyword">new</strong> <a name="ClaimAggregator" href="../../../../../org/apache/rat/report/claim/impl/ClaimAggregator.html#ClaimAggregator">ClaimAggregator</a>(statistic));
 <a class="jxr_linenumber" name="L57" href="#L57">57</a>          }
 <a class="jxr_linenumber" name="L58" href="#L58">58</a>          <strong class="jxr_keyword">if</strong> (configuration.isAddingLicenses()) {
-<a class="jxr_linenumber" name="L59" href="#L59">59</a>              reporters.add(<strong class="jxr_keyword">new</strong> <a name="LicenseAddingReport" href="../../../../../org/apache/rat/report/claim/util/LicenseAddingReport.html#LicenseAddingReport">LicenseAddingReport</a>(configuration.getCopyrightMessage(), configuration.isAddingLicensesForced()));
+<a class="jxr_linenumber" name="L59" href="#L59">59</a>              reporters.add(<strong class="jxr_keyword">new</strong> <a name="LicenseAddingReport" href="../../../../../org/apache/rat/report/claim/util/LicenseAddingReport.html#LicenseAddingReport">LicenseAddingReport</a>(configuration.getLog(), configuration.getCopyrightMessage(), configuration.isAddingLicensesForced()));
 <a class="jxr_linenumber" name="L60" href="#L60">60</a>          }
 <a class="jxr_linenumber" name="L61" href="#L61">61</a>          reporters.add(<strong class="jxr_keyword">new</strong> <a name="SimpleXmlClaimReporter" href="../../../../../org/apache/rat/report/claim/impl/xml/SimpleXmlClaimReporter.html#SimpleXmlClaimReporter">SimpleXmlClaimReporter</a>(writer));
 <a class="jxr_linenumber" name="L62" href="#L62">62</a>  
 <a class="jxr_linenumber" name="L63" href="#L63">63</a>          <strong class="jxr_keyword">final</strong> <a name="IDocumentAnalyser" href="../../../../../org/apache/rat/document/IDocumentAnalyser.html#IDocumentAnalyser">IDocumentAnalyser</a> analyser =
-<a class="jxr_linenumber" name="L64" href="#L64">64</a>              DefaultAnalyserFactory.createDefaultAnalyser(configuration.getLicenses(LicenseFilter.all));
+<a class="jxr_linenumber" name="L64" href="#L64">64</a>              DefaultAnalyserFactory.createDefaultAnalyser(configuration.getLog(), configuration.getLicenses(LicenseFilter.all));
 <a class="jxr_linenumber" name="L65" href="#L65">65</a>          <strong class="jxr_keyword">final</strong> <a name="DefaultPolicy" href="../../../../../org/apache/rat/policy/DefaultPolicy.html#DefaultPolicy">DefaultPolicy</a> policy = <strong class="jxr_keyword">new</strong> <a name="DefaultPolicy" href="../../../../../org/apache/rat/policy/DefaultPolicy.html#DefaultPolicy">DefaultPolicy</a>(configuration.getLicenseFamilies(LicenseFilter.approved));
 <a class="jxr_linenumber" name="L66" href="#L66">66</a>  
 <a class="jxr_linenumber" name="L67" href="#L67">67</a>          <strong class="jxr_keyword">final</strong> <a name="IDocumentAnalyser" href="../../../../../org/apache/rat/document/IDocumentAnalyser.html#IDocumentAnalyser">IDocumentAnalyser</a>[] analysers = {analyser, policy};
diff --git a/rat0161/apache-rat-core/xref/org/apache/rat/utils/DefaultLog.html b/rat0161/apache-rat-core/xref/org/apache/rat/utils/DefaultLog.html
index f049a34c..99eed539 100644
--- a/rat0161/apache-rat-core/xref/org/apache/rat/utils/DefaultLog.html
+++ b/rat0161/apache-rat-core/xref/org/apache/rat/utils/DefaultLog.html
@@ -35,28 +35,35 @@
 <a class="jxr_linenumber" name="L27" href="#L27">27</a>  <em class="jxr_javadoccomment">     * The instance of the default log.</em>
 <a class="jxr_linenumber" name="L28" href="#L28">28</a>  <em class="jxr_javadoccomment">     */</em>
 <a class="jxr_linenumber" name="L29" href="#L29">29</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <a name="DefaultLog" href="../../../../org/apache/rat/utils/DefaultLog.html#DefaultLog">DefaultLog</a> INSTANCE = <strong class="jxr_keyword">new</strong> <a name="DefaultLog" href="../../../../org/apache/rat/utils/DefaultLog.html#DefaultLog">DefaultLog</a>();
-<a class="jxr_linenumber" name="L30" href="#L30">30</a>  
-<a class="jxr_linenumber" name="L31" href="#L31">31</a>      <strong class="jxr_keyword">private</strong> <a name="DefaultLog" href="../../../../org/apache/rat/utils/DefaultLog.html#DefaultLog">DefaultLog</a>() {
-<a class="jxr_linenumber" name="L32" href="#L32">32</a>      }
-<a class="jxr_linenumber" name="L33" href="#L33">33</a>  
-<a class="jxr_linenumber" name="L34" href="#L34">34</a>      @Override
-<a class="jxr_linenumber" name="L35" href="#L35">35</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> log(Level level, String msg) {
-<a class="jxr_linenumber" name="L36" href="#L36">36</a>          <strong class="jxr_keyword">switch</strong> (level) {
-<a class="jxr_linenumber" name="L37" href="#L37">37</a>          <strong class="jxr_keyword">case</strong> DEBUG:
-<a class="jxr_linenumber" name="L38" href="#L38">38</a>          <strong class="jxr_keyword">case</strong> INFO:
-<a class="jxr_linenumber" name="L39" href="#L39">39</a>          <strong class="jxr_keyword">case</strong> WARN:
-<a class="jxr_linenumber" name="L40" href="#L40">40</a>              System.out.format(<span class="jxr_string">"%s: %s%n"</span>, level, msg);
-<a class="jxr_linenumber" name="L41" href="#L41">41</a>              <strong class="jxr_keyword">break</strong>;
-<a class="jxr_linenumber" name="L42" href="#L42">42</a>          <strong class="jxr_keyword">case</strong> ERROR:
-<a class="jxr_linenumber" name="L43" href="#L43">43</a>              System.err.format(<span class="jxr_string">"%s: %s%n"</span>, level, msg);
-<a class="jxr_linenumber" name="L44" href="#L44">44</a>              <strong class="jxr_keyword">break</strong>;
-<a class="jxr_linenumber" name="L45" href="#L45">45</a>  		<strong class="jxr_keyword">case</strong> OFF:
-<a class="jxr_linenumber" name="L46" href="#L46">46</a>  			<strong class="jxr_keyword">break</strong>;
-<a class="jxr_linenumber" name="L47" href="#L47">47</a>  		<strong class="jxr_keyword">default</strong>:
-<a class="jxr_linenumber" name="L48" href="#L48">48</a>  			<strong class="jxr_keyword">break</strong>;
-<a class="jxr_linenumber" name="L49" href="#L49">49</a>          }
-<a class="jxr_linenumber" name="L50" href="#L50">50</a>      }
-<a class="jxr_linenumber" name="L51" href="#L51">51</a>  }
+<a class="jxr_linenumber" name="L30" href="#L30">30</a>      
+<a class="jxr_linenumber" name="L31" href="#L31">31</a>      <strong class="jxr_keyword">private</strong> Level level;
+<a class="jxr_linenumber" name="L32" href="#L32">32</a>  
+<a class="jxr_linenumber" name="L33" href="#L33">33</a>      <strong class="jxr_keyword">private</strong> <a name="DefaultLog" href="../../../../org/apache/rat/utils/DefaultLog.html#DefaultLog">DefaultLog</a>() {
+<a class="jxr_linenumber" name="L34" href="#L34">34</a>          level = Level.INFO;
+<a class="jxr_linenumber" name="L35" href="#L35">35</a>      }
+<a class="jxr_linenumber" name="L36" href="#L36">36</a>  
+<a class="jxr_linenumber" name="L37" href="#L37">37</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setLevel(Level level) {
+<a class="jxr_linenumber" name="L38" href="#L38">38</a>          <strong class="jxr_keyword">this</strong>.level = level;
+<a class="jxr_linenumber" name="L39" href="#L39">39</a>      }
+<a class="jxr_linenumber" name="L40" href="#L40">40</a>      @Override
+<a class="jxr_linenumber" name="L41" href="#L41">41</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> log(Level level, String msg) {
+<a class="jxr_linenumber" name="L42" href="#L42">42</a>          <strong class="jxr_keyword">if</strong> (<strong class="jxr_keyword">this</strong>.level.ordinal() &lt;= level.ordinal())
+<a class="jxr_linenumber" name="L43" href="#L43">43</a>              <strong class="jxr_keyword">switch</strong> (level) {
+<a class="jxr_linenumber" name="L44" href="#L44">44</a>              <strong class="jxr_keyword">case</strong> DEBUG:
+<a class="jxr_linenumber" name="L45" href="#L45">45</a>              <strong class="jxr_keyword">case</strong> INFO:
+<a class="jxr_linenumber" name="L46" href="#L46">46</a>              <strong class="jxr_keyword">case</strong> WARN:
+<a class="jxr_linenumber" name="L47" href="#L47">47</a>                  System.out.format(<span class="jxr_string">"%s: %s%n"</span>, level, msg);
+<a class="jxr_linenumber" name="L48" href="#L48">48</a>                  <strong class="jxr_keyword">break</strong>;
+<a class="jxr_linenumber" name="L49" href="#L49">49</a>              <strong class="jxr_keyword">case</strong> ERROR:
+<a class="jxr_linenumber" name="L50" href="#L50">50</a>                  System.err.format(<span class="jxr_string">"%s: %s%n"</span>, level, msg);
+<a class="jxr_linenumber" name="L51" href="#L51">51</a>                  <strong class="jxr_keyword">break</strong>;
+<a class="jxr_linenumber" name="L52" href="#L52">52</a>              <strong class="jxr_keyword">case</strong> OFF:
+<a class="jxr_linenumber" name="L53" href="#L53">53</a>                  <strong class="jxr_keyword">break</strong>;
+<a class="jxr_linenumber" name="L54" href="#L54">54</a>              <strong class="jxr_keyword">default</strong>:
+<a class="jxr_linenumber" name="L55" href="#L55">55</a>                  <strong class="jxr_keyword">break</strong>;
+<a class="jxr_linenumber" name="L56" href="#L56">56</a>              }
+<a class="jxr_linenumber" name="L57" href="#L57">57</a>      }
+<a class="jxr_linenumber" name="L58" href="#L58">58</a>  }
 </pre>
 <hr/>
 <div id="footer">Copyright &#169; 2006&#x2013;2024 <a href="https://www.apache.org">Apache Software Foundation</a>. All rights reserved.</div>
diff --git a/rat0161/apache-rat-core/xref/org/apache/rat/utils/Log.html b/rat0161/apache-rat-core/xref/org/apache/rat/utils/Log.html
index 54e00958..47ad7e03 100644
--- a/rat0161/apache-rat-core/xref/org/apache/rat/utils/Log.html
+++ b/rat0161/apache-rat-core/xref/org/apache/rat/utils/Log.html
@@ -35,34 +35,55 @@
 <a class="jxr_linenumber" name="L27" href="#L27">27</a>  <em class="jxr_javadoccomment">     * The log levels supported by logging.</em>
 <a class="jxr_linenumber" name="L28" href="#L28">28</a>  <em class="jxr_javadoccomment">     */</em>
 <a class="jxr_linenumber" name="L29" href="#L29">29</a>      <strong class="jxr_keyword">public</strong> enum Level {
-<a class="jxr_linenumber" name="L30" href="#L30">30</a>      	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L31" href="#L31">31</a>  <em class="jxr_javadoccomment">    	 * Log nothing.</em>
-<a class="jxr_linenumber" name="L32" href="#L32">32</a>  <em class="jxr_javadoccomment">    	 */</em>
-<a class="jxr_linenumber" name="L33" href="#L33">33</a>      	OFF, 
-<a class="jxr_linenumber" name="L34" href="#L34">34</a>      	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L35" href="#L35">35</a>  <em class="jxr_javadoccomment">    	 * Log debug only.</em>
-<a class="jxr_linenumber" name="L36" href="#L36">36</a>  <em class="jxr_javadoccomment">    	 */</em>
-<a class="jxr_linenumber" name="L37" href="#L37">37</a>      	DEBUG, 
-<a class="jxr_linenumber" name="L38" href="#L38">38</a>      	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L39" href="#L39">39</a>  <em class="jxr_javadoccomment">    	 * Log info only.</em>
-<a class="jxr_linenumber" name="L40" href="#L40">40</a>  <em class="jxr_javadoccomment">    	 */</em>
-<a class="jxr_linenumber" name="L41" href="#L41">41</a>      	INFO, 
-<a class="jxr_linenumber" name="L42" href="#L42">42</a>      	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L43" href="#L43">43</a>  <em class="jxr_javadoccomment">    	 * Log warn only.</em>
-<a class="jxr_linenumber" name="L44" href="#L44">44</a>  <em class="jxr_javadoccomment">    	 */</em>
-<a class="jxr_linenumber" name="L45" href="#L45">45</a>      	WARN, 
-<a class="jxr_linenumber" name="L46" href="#L46">46</a>      	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L47" href="#L47">47</a>  <em class="jxr_javadoccomment">    	 * Log error only.</em>
-<a class="jxr_linenumber" name="L48" href="#L48">48</a>  <em class="jxr_javadoccomment">    	 */</em>
-<a class="jxr_linenumber" name="L49" href="#L49">49</a>      	ERROR };
-<a class="jxr_linenumber" name="L50" href="#L50">50</a>  
-<a class="jxr_linenumber" name="L51" href="#L51">51</a>      <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L52" href="#L52">52</a>  <em class="jxr_javadoccomment">     * Writes a message at a specific log level.</em>
-<a class="jxr_linenumber" name="L53" href="#L53">53</a>  <em class="jxr_javadoccomment">     * @param level The log level to write at.</em>
-<a class="jxr_linenumber" name="L54" href="#L54">54</a>  <em class="jxr_javadoccomment">     * @param message the Message to write.</em>
-<a class="jxr_linenumber" name="L55" href="#L55">55</a>  <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="L56" href="#L56">56</a>      <strong class="jxr_keyword">void</strong> log(Level level, String message);
-<a class="jxr_linenumber" name="L57" href="#L57">57</a>  }
+<a class="jxr_linenumber" name="L30" href="#L30">30</a>          <em class="jxr_comment">// these must be listed in order of decreasing noisiness.</em>
+<a class="jxr_linenumber" name="L31" href="#L31">31</a>      	<em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L32" href="#L32">32</a>  <em class="jxr_javadoccomment">    	 * Log debug only.</em>
+<a class="jxr_linenumber" name="L33" href="#L33">33</a>  <em class="jxr_javadoccomment">    	 */</em>
+<a class="jxr_linenumber" name="L34" href="#L34">34</a>      	DEBUG, 
+<a class="jxr_linenumber" name="L35" href="#L35">35</a>      	<em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L36" href="#L36">36</a>  <em class="jxr_javadoccomment">    	 * Log info only.</em>
+<a class="jxr_linenumber" name="L37" href="#L37">37</a>  <em class="jxr_javadoccomment">    	 */</em>
+<a class="jxr_linenumber" name="L38" href="#L38">38</a>      	INFO, 
+<a class="jxr_linenumber" name="L39" href="#L39">39</a>      	<em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L40" href="#L40">40</a>  <em class="jxr_javadoccomment">    	 * Log warn only.</em>
+<a class="jxr_linenumber" name="L41" href="#L41">41</a>  <em class="jxr_javadoccomment">    	 */</em>
+<a class="jxr_linenumber" name="L42" href="#L42">42</a>      	WARN, 
+<a class="jxr_linenumber" name="L43" href="#L43">43</a>      	<em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L44" href="#L44">44</a>  <em class="jxr_javadoccomment">    	 * Log error only.</em>
+<a class="jxr_linenumber" name="L45" href="#L45">45</a>  <em class="jxr_javadoccomment">    	 */</em>
+<a class="jxr_linenumber" name="L46" href="#L46">46</a>      	ERROR,
+<a class="jxr_linenumber" name="L47" href="#L47">47</a>          <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L48" href="#L48">48</a>  <em class="jxr_javadoccomment">         * Log nothing.</em>
+<a class="jxr_linenumber" name="L49" href="#L49">49</a>  <em class="jxr_javadoccomment">         */</em>
+<a class="jxr_linenumber" name="L50" href="#L50">50</a>          OFF};
+<a class="jxr_linenumber" name="L51" href="#L51">51</a>  
+<a class="jxr_linenumber" name="L52" href="#L52">52</a>      <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L53" href="#L53">53</a>  <em class="jxr_javadoccomment">     * Writes a message at a specific log level.</em>
+<a class="jxr_linenumber" name="L54" href="#L54">54</a>  <em class="jxr_javadoccomment">     * @param level The log level to write at.</em>
+<a class="jxr_linenumber" name="L55" href="#L55">55</a>  <em class="jxr_javadoccomment">     * @param message the Message to write.</em>
+<a class="jxr_linenumber" name="L56" href="#L56">56</a>  <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="L57" href="#L57">57</a>      <strong class="jxr_keyword">void</strong> log(Level level, String message);
+<a class="jxr_linenumber" name="L58" href="#L58">58</a>      
+<a class="jxr_linenumber" name="L59" href="#L59">59</a>      <strong class="jxr_keyword">default</strong> <strong class="jxr_keyword">void</strong> log(Level level, Object message) {
+<a class="jxr_linenumber" name="L60" href="#L60">60</a>          log(level, message == <strong class="jxr_keyword">null</strong> ? <span class="jxr_string">"NULL"</span> : message.toString());
+<a class="jxr_linenumber" name="L61" href="#L61">61</a>      }
+<a class="jxr_linenumber" name="L62" href="#L62">62</a>      
+<a class="jxr_linenumber" name="L63" href="#L63">63</a>      <strong class="jxr_keyword">default</strong> <strong class="jxr_keyword">void</strong> debug(Object message) {
+<a class="jxr_linenumber" name="L64" href="#L64">64</a>          log(Level.DEBUG, message);
+<a class="jxr_linenumber" name="L65" href="#L65">65</a>      }
+<a class="jxr_linenumber" name="L66" href="#L66">66</a>  
+<a class="jxr_linenumber" name="L67" href="#L67">67</a>      <strong class="jxr_keyword">default</strong> <strong class="jxr_keyword">void</strong> info(Object message) {
+<a class="jxr_linenumber" name="L68" href="#L68">68</a>          log(Level.INFO, message);
+<a class="jxr_linenumber" name="L69" href="#L69">69</a>      }
+<a class="jxr_linenumber" name="L70" href="#L70">70</a>      
+<a class="jxr_linenumber" name="L71" href="#L71">71</a>      <strong class="jxr_keyword">default</strong> <strong class="jxr_keyword">void</strong> warn(Object message) {
+<a class="jxr_linenumber" name="L72" href="#L72">72</a>          log(Level.WARN, message);
+<a class="jxr_linenumber" name="L73" href="#L73">73</a>      }
+<a class="jxr_linenumber" name="L74" href="#L74">74</a>      
+<a class="jxr_linenumber" name="L75" href="#L75">75</a>      <strong class="jxr_keyword">default</strong> <strong class="jxr_keyword">void</strong> error(Object message) {
+<a class="jxr_linenumber" name="L76" href="#L76">76</a>          log(Level.ERROR, message);
+<a class="jxr_linenumber" name="L77" href="#L77">77</a>      }
+<a class="jxr_linenumber" name="L78" href="#L78">78</a>  }
 </pre>
 <hr/>
 <div id="footer">Copyright &#169; 2006&#x2013;2024 <a href="https://www.apache.org">Apache Software Foundation</a>. All rights reserved.</div>
diff --git a/rat0161/apache-rat-plugin/dependencies.html b/rat0161/apache-rat-plugin/dependencies.html
index c79634ed..8444f7df 100644
--- a/rat0161/apache-rat-plugin/dependencies.html
+++ b/rat0161/apache-rat-plugin/dependencies.html
@@ -2042,7 +2042,7 @@ Brotli, Zstandard and ar, cpio, jar, tar, zip, dump, 7z, arj.</p>
 <td align="center">-</td></tr>
 <tr class="b">
 <td align="left">apache-rat-core-0.16.1-SNAPSHOT-tests.jar</td>
-<td align="right">263.3 kB</td>
+<td align="right">263.6 kB</td>
 <td align="right">-</td>
 <td align="right">-</td>
 <td align="right">-</td>
diff --git a/rat0161/apache-rat-plugin/jira-report.html b/rat0161/apache-rat-plugin/jira-report.html
index 014c6a58..a591faf8 100644
--- a/rat0161/apache-rat-plugin/jira-report.html
+++ b/rat0161/apache-rat-plugin/jira-report.html
@@ -265,13 +265,21 @@ JIRA Report
 <td>Closed</td></tr>
 <tr class="b">
 <td>0.16.1</td>
+<td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-346">RAT-346</a></td>
+<td>scan</td>
+<td>WARN in case user defined License family has the same name as existing one</td>
+<td>Improvement</td>
+<td>Fixed</td>
+<td>Closed</td></tr>
+<tr class="a">
+<td>0.16.1</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-342">RAT-342</a></td>
 <td></td>
 <td>Use Maven wrapper in RAT build</td>
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.16</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-328">RAT-328</a></td>
 <td>engine</td>
@@ -279,7 +287,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Resolved</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.16</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-326">RAT-326</a></td>
 <td>site</td>
@@ -287,7 +295,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Resolved</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.16</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-315">RAT-315</a></td>
 <td>build</td>
@@ -295,7 +303,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.16</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-314">RAT-314</a></td>
 <td>maven</td>
@@ -303,7 +311,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.16</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-335">RAT-335</a></td>
 <td></td>
@@ -311,7 +319,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Resolved</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.16</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-321">RAT-321</a></td>
 <td>engine</td>
@@ -319,7 +327,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Resolved</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.16</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-320">RAT-320</a></td>
 <td>cli</td>
@@ -327,7 +335,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Resolved</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.16</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-317">RAT-317</a></td>
 <td></td>
@@ -335,7 +343,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.16</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-311">RAT-311</a></td>
 <td></td>
@@ -343,7 +351,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.16</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-329">RAT-329</a></td>
 <td>engine</td>
@@ -351,7 +359,7 @@ JIRA Report
 <td>New Feature</td>
 <td>Fixed</td>
 <td>Resolved</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.16</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-322">RAT-322</a></td>
 <td>cli, maven</td>
@@ -359,7 +367,7 @@ JIRA Report
 <td>New Feature</td>
 <td>Fixed</td>
 <td>Resolved</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.16</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-264">RAT-264</a></td>
 <td></td>
@@ -367,7 +375,7 @@ JIRA Report
 <td>New Feature</td>
 <td>Fixed</td>
 <td>Resolved</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.16</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-251">RAT-251</a></td>
 <td></td>
@@ -375,7 +383,7 @@ JIRA Report
 <td>New Feature</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.16</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-338">RAT-338</a></td>
 <td></td>
@@ -383,7 +391,7 @@ JIRA Report
 <td>Task</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.16</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-316">RAT-316</a></td>
 <td>engine</td>
@@ -391,7 +399,7 @@ JIRA Report
 <td>Task</td>
 <td>Fixed</td>
 <td>Resolved</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.16</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-312">RAT-312</a></td>
 <td></td>
@@ -399,7 +407,7 @@ JIRA Report
 <td>Task</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.15</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-309">RAT-309</a></td>
 <td></td>
@@ -407,7 +415,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Resolved</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.15</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-307">RAT-307</a></td>
 <td></td>
@@ -415,7 +423,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.15</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-306">RAT-306</a></td>
 <td>site</td>
@@ -423,7 +431,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Resolved</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.15</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-310">RAT-310</a></td>
 <td></td>
@@ -431,7 +439,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.15</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-305">RAT-305</a></td>
 <td></td>
@@ -439,7 +447,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-298">RAT-298</a></td>
 <td></td>
@@ -447,7 +455,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-291">RAT-291</a></td>
 <td></td>
@@ -455,7 +463,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-290">RAT-290</a></td>
 <td></td>
@@ -463,7 +471,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-283">RAT-283</a></td>
 <td></td>
@@ -471,7 +479,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-281">RAT-281</a></td>
 <td></td>
@@ -479,7 +487,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-275">RAT-275</a></td>
 <td></td>
@@ -487,7 +495,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-273">RAT-273</a></td>
 <td></td>
@@ -495,7 +503,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-268">RAT-268</a></td>
 <td>maven</td>
@@ -503,7 +511,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-258">RAT-258</a></td>
 <td></td>
@@ -511,7 +519,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-257">RAT-257</a></td>
 <td>cli</td>
@@ -519,7 +527,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-212">RAT-212</a></td>
 <td></td>
@@ -527,7 +535,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-207">RAT-207</a></td>
 <td>maven</td>
@@ -535,7 +543,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-158">RAT-158</a></td>
 <td></td>
@@ -543,7 +551,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-304">RAT-304</a></td>
 <td></td>
@@ -551,7 +559,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-297">RAT-297</a></td>
 <td></td>
@@ -559,7 +567,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-289">RAT-289</a></td>
 <td></td>
@@ -567,7 +575,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-287">RAT-287</a></td>
 <td>site</td>
@@ -575,7 +583,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-285">RAT-285</a></td>
 <td></td>
@@ -583,7 +591,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-277">RAT-277</a></td>
 <td></td>
@@ -591,7 +599,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-274">RAT-274</a></td>
 <td></td>
@@ -599,7 +607,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-270">RAT-270</a></td>
 <td></td>
@@ -607,7 +615,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-269">RAT-269</a></td>
 <td></td>
@@ -615,7 +623,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-266">RAT-266</a></td>
 <td>maven</td>
@@ -623,7 +631,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-260">RAT-260</a></td>
 <td></td>
@@ -631,7 +639,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-250">RAT-250</a></td>
 <td></td>
@@ -639,7 +647,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-244">RAT-244</a></td>
 <td></td>
@@ -647,7 +655,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-118">RAT-118</a></td>
 <td>maven</td>
@@ -655,7 +663,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Resolved</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-262">RAT-262</a></td>
 <td>scan</td>
@@ -663,7 +671,7 @@ JIRA Report
 <td>New Feature</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-252">RAT-252</a></td>
 <td></td>
@@ -671,7 +679,7 @@ JIRA Report
 <td>New Feature</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-288">RAT-288</a></td>
 <td>maven</td>
@@ -679,7 +687,7 @@ JIRA Report
 <td>Task</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-279">RAT-279</a></td>
 <td></td>
@@ -687,7 +695,7 @@ JIRA Report
 <td>Task</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-271">RAT-271</a></td>
 <td></td>
@@ -695,7 +703,7 @@ JIRA Report
 <td>Task</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-267">RAT-267</a></td>
 <td>reports</td>
@@ -703,7 +711,7 @@ JIRA Report
 <td>Task</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-254">RAT-254</a></td>
 <td></td>
@@ -711,7 +719,7 @@ JIRA Report
 <td>Task</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.13</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-242">RAT-242</a></td>
 <td>reports</td>
@@ -719,7 +727,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.13</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-234">RAT-234</a></td>
 <td></td>
@@ -727,7 +735,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.13</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-230">RAT-230</a></td>
 <td>maven</td>
@@ -735,7 +743,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.13</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-229">RAT-229</a></td>
 <td></td>
@@ -743,7 +751,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.13</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-228">RAT-228</a></td>
 <td>antlib</td>
@@ -751,7 +759,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.13</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-224">RAT-224</a></td>
 <td></td>
@@ -759,7 +767,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.13</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-222">RAT-222</a></td>
 <td></td>
@@ -767,7 +775,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.13</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-245">RAT-245</a></td>
 <td></td>
@@ -775,7 +783,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.13</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-243">RAT-243</a></td>
 <td>maven</td>
@@ -783,7 +791,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.13</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-241">RAT-241</a></td>
 <td>maven</td>
@@ -791,7 +799,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.13</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-233">RAT-233</a></td>
 <td></td>
@@ -799,7 +807,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.13</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-232">RAT-232</a></td>
 <td></td>
@@ -807,7 +815,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.13</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-231">RAT-231</a></td>
 <td></td>
@@ -815,7 +823,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.13</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-227">RAT-227</a></td>
 <td>site</td>
@@ -823,7 +831,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.13</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-226">RAT-226</a></td>
 <td>antlib</td>
@@ -831,7 +839,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.13</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-223">RAT-223</a></td>
 <td></td>
@@ -839,7 +847,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.13</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-221">RAT-221</a></td>
 <td>docs</td>
@@ -847,7 +855,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.13</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-218">RAT-218</a></td>
 <td>maven</td>
@@ -855,7 +863,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.13</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-217">RAT-217</a></td>
 <td></td>
@@ -863,7 +871,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.13</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-216">RAT-216</a></td>
 <td></td>
@@ -871,7 +879,7 @@ JIRA Report
 <td>Task</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.12</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-215">RAT-215</a></td>
 <td></td>
@@ -879,7 +887,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Resolved</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.12</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-214">RAT-214</a></td>
 <td></td>
@@ -887,7 +895,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.12</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-188">RAT-188</a></td>
 <td>maven</td>
@@ -895,7 +903,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Resolved</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.12</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-180">RAT-180</a></td>
 <td></td>
@@ -903,7 +911,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Resolved</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.12</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-179">RAT-179</a></td>
 <td>antlib, maven</td>
@@ -911,7 +919,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Resolved</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.12</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-177">RAT-177</a></td>
 <td></td>
@@ -919,21 +927,13 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Resolved</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.12</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-175">RAT-175</a></td>
 <td></td>
 <td>SourceCodeManagementSystems.hasIgnoreFile() should return boolean</td>
 <td>Bug</td>
 <td>Fixed</td>
-<td>Resolved</td></tr>
-<tr class="a">
-<td>0.12</td>
-<td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-174">RAT-174</a></td>
-<td></td>
-<td>CDDL1License still very slow</td>
-<td>Bug</td>
-<td>Fixed</td>
 <td>Resolved</td></tr></table></section>
       </div>
     </div>
diff --git a/rat0161/apache-rat-plugin/rat-report.html b/rat0161/apache-rat-plugin/rat-report.html
index d2c579ee..5efb23c5 100644
--- a/rat0161/apache-rat-plugin/rat-report.html
+++ b/rat0161/apache-rat-plugin/rat-report.html
@@ -133,7 +133,7 @@ Rat (Release Audit Tool) results
 *****************************************************
 Summary
 -------
-Generated at: 2024-01-16T10:49:26+01:00
+Generated at: 2024-01-16T22:15:42+01:00
 
 Notes: 0
 Binaries: 0
diff --git a/rat0161/apache-rat-tasks/dependencies.html b/rat0161/apache-rat-tasks/dependencies.html
index 8ec50dff..2ccaf8c6 100644
--- a/rat0161/apache-rat-tasks/dependencies.html
+++ b/rat0161/apache-rat-tasks/dependencies.html
@@ -757,7 +757,7 @@ Brotli, Zstandard and ar, cpio, jar, tar, zip, dump, 7z, arj.</p>
 <td align="center">-</td></tr>
 <tr class="a">
 <td align="left">apache-rat-core-0.16.1-SNAPSHOT-tests.jar</td>
-<td align="right">263.3 kB</td>
+<td align="right">263.6 kB</td>
 <td align="right">-</td>
 <td align="right">-</td>
 <td align="right">-</td>
diff --git a/rat0161/apache-rat-tasks/jira-report.html b/rat0161/apache-rat-tasks/jira-report.html
index 7f72aad4..7b279aa9 100644
--- a/rat0161/apache-rat-tasks/jira-report.html
+++ b/rat0161/apache-rat-tasks/jira-report.html
@@ -261,13 +261,21 @@ JIRA Report
 <td>Closed</td></tr>
 <tr class="b">
 <td>0.16.1</td>
+<td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-346">RAT-346</a></td>
+<td>scan</td>
+<td>WARN in case user defined License family has the same name as existing one</td>
+<td>Improvement</td>
+<td>Fixed</td>
+<td>Closed</td></tr>
+<tr class="a">
+<td>0.16.1</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-342">RAT-342</a></td>
 <td></td>
 <td>Use Maven wrapper in RAT build</td>
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.16</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-328">RAT-328</a></td>
 <td>engine</td>
@@ -275,7 +283,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Resolved</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.16</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-326">RAT-326</a></td>
 <td>site</td>
@@ -283,7 +291,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Resolved</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.16</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-315">RAT-315</a></td>
 <td>build</td>
@@ -291,7 +299,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.16</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-314">RAT-314</a></td>
 <td>maven</td>
@@ -299,7 +307,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.16</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-335">RAT-335</a></td>
 <td></td>
@@ -307,7 +315,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Resolved</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.16</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-321">RAT-321</a></td>
 <td>engine</td>
@@ -315,7 +323,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Resolved</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.16</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-320">RAT-320</a></td>
 <td>cli</td>
@@ -323,7 +331,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Resolved</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.16</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-317">RAT-317</a></td>
 <td></td>
@@ -331,7 +339,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.16</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-311">RAT-311</a></td>
 <td></td>
@@ -339,7 +347,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.16</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-329">RAT-329</a></td>
 <td>engine</td>
@@ -347,7 +355,7 @@ JIRA Report
 <td>New Feature</td>
 <td>Fixed</td>
 <td>Resolved</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.16</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-322">RAT-322</a></td>
 <td>cli, maven</td>
@@ -355,7 +363,7 @@ JIRA Report
 <td>New Feature</td>
 <td>Fixed</td>
 <td>Resolved</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.16</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-264">RAT-264</a></td>
 <td></td>
@@ -363,7 +371,7 @@ JIRA Report
 <td>New Feature</td>
 <td>Fixed</td>
 <td>Resolved</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.16</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-251">RAT-251</a></td>
 <td></td>
@@ -371,7 +379,7 @@ JIRA Report
 <td>New Feature</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.16</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-338">RAT-338</a></td>
 <td></td>
@@ -379,7 +387,7 @@ JIRA Report
 <td>Task</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.16</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-316">RAT-316</a></td>
 <td>engine</td>
@@ -387,7 +395,7 @@ JIRA Report
 <td>Task</td>
 <td>Fixed</td>
 <td>Resolved</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.16</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-312">RAT-312</a></td>
 <td></td>
@@ -395,7 +403,7 @@ JIRA Report
 <td>Task</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.15</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-309">RAT-309</a></td>
 <td></td>
@@ -403,7 +411,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Resolved</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.15</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-307">RAT-307</a></td>
 <td></td>
@@ -411,7 +419,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.15</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-306">RAT-306</a></td>
 <td>site</td>
@@ -419,7 +427,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Resolved</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.15</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-310">RAT-310</a></td>
 <td></td>
@@ -427,7 +435,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.15</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-305">RAT-305</a></td>
 <td></td>
@@ -435,7 +443,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-298">RAT-298</a></td>
 <td></td>
@@ -443,7 +451,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-291">RAT-291</a></td>
 <td></td>
@@ -451,7 +459,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-290">RAT-290</a></td>
 <td></td>
@@ -459,7 +467,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-283">RAT-283</a></td>
 <td></td>
@@ -467,7 +475,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-281">RAT-281</a></td>
 <td></td>
@@ -475,7 +483,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-275">RAT-275</a></td>
 <td></td>
@@ -483,7 +491,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-273">RAT-273</a></td>
 <td></td>
@@ -491,7 +499,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-268">RAT-268</a></td>
 <td>maven</td>
@@ -499,7 +507,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-258">RAT-258</a></td>
 <td></td>
@@ -507,7 +515,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-257">RAT-257</a></td>
 <td>cli</td>
@@ -515,7 +523,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-212">RAT-212</a></td>
 <td></td>
@@ -523,7 +531,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-207">RAT-207</a></td>
 <td>maven</td>
@@ -531,7 +539,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-158">RAT-158</a></td>
 <td></td>
@@ -539,7 +547,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-304">RAT-304</a></td>
 <td></td>
@@ -547,7 +555,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-297">RAT-297</a></td>
 <td></td>
@@ -555,7 +563,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-289">RAT-289</a></td>
 <td></td>
@@ -563,7 +571,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-287">RAT-287</a></td>
 <td>site</td>
@@ -571,7 +579,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-285">RAT-285</a></td>
 <td></td>
@@ -579,7 +587,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-277">RAT-277</a></td>
 <td></td>
@@ -587,7 +595,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-274">RAT-274</a></td>
 <td></td>
@@ -595,7 +603,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-270">RAT-270</a></td>
 <td></td>
@@ -603,7 +611,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-269">RAT-269</a></td>
 <td></td>
@@ -611,7 +619,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-266">RAT-266</a></td>
 <td>maven</td>
@@ -619,7 +627,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-260">RAT-260</a></td>
 <td></td>
@@ -627,7 +635,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-250">RAT-250</a></td>
 <td></td>
@@ -635,7 +643,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-244">RAT-244</a></td>
 <td></td>
@@ -643,7 +651,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-118">RAT-118</a></td>
 <td>maven</td>
@@ -651,7 +659,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Resolved</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-262">RAT-262</a></td>
 <td>scan</td>
@@ -659,7 +667,7 @@ JIRA Report
 <td>New Feature</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-252">RAT-252</a></td>
 <td></td>
@@ -667,7 +675,7 @@ JIRA Report
 <td>New Feature</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-288">RAT-288</a></td>
 <td>maven</td>
@@ -675,7 +683,7 @@ JIRA Report
 <td>Task</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-279">RAT-279</a></td>
 <td></td>
@@ -683,7 +691,7 @@ JIRA Report
 <td>Task</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-271">RAT-271</a></td>
 <td></td>
@@ -691,7 +699,7 @@ JIRA Report
 <td>Task</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-267">RAT-267</a></td>
 <td>reports</td>
@@ -699,7 +707,7 @@ JIRA Report
 <td>Task</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-254">RAT-254</a></td>
 <td></td>
@@ -707,7 +715,7 @@ JIRA Report
 <td>Task</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.13</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-242">RAT-242</a></td>
 <td>reports</td>
@@ -715,7 +723,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.13</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-234">RAT-234</a></td>
 <td></td>
@@ -723,7 +731,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.13</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-230">RAT-230</a></td>
 <td>maven</td>
@@ -731,7 +739,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.13</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-229">RAT-229</a></td>
 <td></td>
@@ -739,7 +747,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.13</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-228">RAT-228</a></td>
 <td>antlib</td>
@@ -747,7 +755,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.13</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-224">RAT-224</a></td>
 <td></td>
@@ -755,7 +763,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.13</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-222">RAT-222</a></td>
 <td></td>
@@ -763,7 +771,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.13</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-245">RAT-245</a></td>
 <td></td>
@@ -771,7 +779,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.13</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-243">RAT-243</a></td>
 <td>maven</td>
@@ -779,7 +787,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.13</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-241">RAT-241</a></td>
 <td>maven</td>
@@ -787,7 +795,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.13</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-233">RAT-233</a></td>
 <td></td>
@@ -795,7 +803,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.13</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-232">RAT-232</a></td>
 <td></td>
@@ -803,7 +811,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.13</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-231">RAT-231</a></td>
 <td></td>
@@ -811,7 +819,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.13</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-227">RAT-227</a></td>
 <td>site</td>
@@ -819,7 +827,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.13</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-226">RAT-226</a></td>
 <td>antlib</td>
@@ -827,7 +835,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.13</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-223">RAT-223</a></td>
 <td></td>
@@ -835,7 +843,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.13</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-221">RAT-221</a></td>
 <td>docs</td>
@@ -843,7 +851,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.13</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-218">RAT-218</a></td>
 <td>maven</td>
@@ -851,7 +859,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.13</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-217">RAT-217</a></td>
 <td></td>
@@ -859,7 +867,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.13</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-216">RAT-216</a></td>
 <td></td>
@@ -867,7 +875,7 @@ JIRA Report
 <td>Task</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.12</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-215">RAT-215</a></td>
 <td></td>
@@ -875,7 +883,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Resolved</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.12</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-214">RAT-214</a></td>
 <td></td>
@@ -883,7 +891,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.12</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-188">RAT-188</a></td>
 <td>maven</td>
@@ -891,7 +899,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Resolved</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.12</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-180">RAT-180</a></td>
 <td></td>
@@ -899,7 +907,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Resolved</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.12</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-179">RAT-179</a></td>
 <td>antlib, maven</td>
@@ -907,7 +915,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Resolved</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.12</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-177">RAT-177</a></td>
 <td></td>
@@ -915,21 +923,13 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Resolved</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.12</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-175">RAT-175</a></td>
 <td></td>
 <td>SourceCodeManagementSystems.hasIgnoreFile() should return boolean</td>
 <td>Bug</td>
 <td>Fixed</td>
-<td>Resolved</td></tr>
-<tr class="a">
-<td>0.12</td>
-<td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-174">RAT-174</a></td>
-<td></td>
-<td>CDDL1License still very slow</td>
-<td>Bug</td>
-<td>Fixed</td>
 <td>Resolved</td></tr></table></section>
       </div>
     </div>
diff --git a/rat0161/apache-rat-tasks/rat-report.html b/rat0161/apache-rat-tasks/rat-report.html
index 773af966..54dda846 100644
--- a/rat0161/apache-rat-tasks/rat-report.html
+++ b/rat0161/apache-rat-tasks/rat-report.html
@@ -129,7 +129,7 @@ Rat (Release Audit Tool) results
 *****************************************************
 Summary
 -------
-Generated at: 2024-01-16T10:49:35+01:00
+Generated at: 2024-01-16T22:15:51+01:00
 
 Notes: 0
 Binaries: 0
diff --git a/rat0161/apache-rat/jira-report.html b/rat0161/apache-rat/jira-report.html
index a6a30df6..31066083 100644
--- a/rat0161/apache-rat/jira-report.html
+++ b/rat0161/apache-rat/jira-report.html
@@ -247,13 +247,21 @@ JIRA Report
 <td>Closed</td></tr>
 <tr class="b">
 <td>0.16.1</td>
+<td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-346">RAT-346</a></td>
+<td>scan</td>
+<td>WARN in case user defined License family has the same name as existing one</td>
+<td>Improvement</td>
+<td>Fixed</td>
+<td>Closed</td></tr>
+<tr class="a">
+<td>0.16.1</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-342">RAT-342</a></td>
 <td></td>
 <td>Use Maven wrapper in RAT build</td>
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.16</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-328">RAT-328</a></td>
 <td>engine</td>
@@ -261,7 +269,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Resolved</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.16</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-326">RAT-326</a></td>
 <td>site</td>
@@ -269,7 +277,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Resolved</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.16</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-315">RAT-315</a></td>
 <td>build</td>
@@ -277,7 +285,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.16</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-314">RAT-314</a></td>
 <td>maven</td>
@@ -285,7 +293,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.16</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-335">RAT-335</a></td>
 <td></td>
@@ -293,7 +301,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Resolved</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.16</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-321">RAT-321</a></td>
 <td>engine</td>
@@ -301,7 +309,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Resolved</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.16</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-320">RAT-320</a></td>
 <td>cli</td>
@@ -309,7 +317,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Resolved</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.16</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-317">RAT-317</a></td>
 <td></td>
@@ -317,7 +325,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.16</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-311">RAT-311</a></td>
 <td></td>
@@ -325,7 +333,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.16</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-329">RAT-329</a></td>
 <td>engine</td>
@@ -333,7 +341,7 @@ JIRA Report
 <td>New Feature</td>
 <td>Fixed</td>
 <td>Resolved</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.16</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-322">RAT-322</a></td>
 <td>cli, maven</td>
@@ -341,7 +349,7 @@ JIRA Report
 <td>New Feature</td>
 <td>Fixed</td>
 <td>Resolved</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.16</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-264">RAT-264</a></td>
 <td></td>
@@ -349,7 +357,7 @@ JIRA Report
 <td>New Feature</td>
 <td>Fixed</td>
 <td>Resolved</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.16</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-251">RAT-251</a></td>
 <td></td>
@@ -357,7 +365,7 @@ JIRA Report
 <td>New Feature</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.16</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-338">RAT-338</a></td>
 <td></td>
@@ -365,7 +373,7 @@ JIRA Report
 <td>Task</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.16</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-316">RAT-316</a></td>
 <td>engine</td>
@@ -373,7 +381,7 @@ JIRA Report
 <td>Task</td>
 <td>Fixed</td>
 <td>Resolved</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.16</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-312">RAT-312</a></td>
 <td></td>
@@ -381,7 +389,7 @@ JIRA Report
 <td>Task</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.15</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-309">RAT-309</a></td>
 <td></td>
@@ -389,7 +397,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Resolved</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.15</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-307">RAT-307</a></td>
 <td></td>
@@ -397,7 +405,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.15</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-306">RAT-306</a></td>
 <td>site</td>
@@ -405,7 +413,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Resolved</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.15</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-310">RAT-310</a></td>
 <td></td>
@@ -413,7 +421,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.15</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-305">RAT-305</a></td>
 <td></td>
@@ -421,7 +429,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-298">RAT-298</a></td>
 <td></td>
@@ -429,7 +437,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-291">RAT-291</a></td>
 <td></td>
@@ -437,7 +445,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-290">RAT-290</a></td>
 <td></td>
@@ -445,7 +453,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-283">RAT-283</a></td>
 <td></td>
@@ -453,7 +461,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-281">RAT-281</a></td>
 <td></td>
@@ -461,7 +469,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-275">RAT-275</a></td>
 <td></td>
@@ -469,7 +477,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-273">RAT-273</a></td>
 <td></td>
@@ -477,7 +485,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-268">RAT-268</a></td>
 <td>maven</td>
@@ -485,7 +493,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-258">RAT-258</a></td>
 <td></td>
@@ -493,7 +501,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-257">RAT-257</a></td>
 <td>cli</td>
@@ -501,7 +509,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-212">RAT-212</a></td>
 <td></td>
@@ -509,7 +517,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-207">RAT-207</a></td>
 <td>maven</td>
@@ -517,7 +525,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-158">RAT-158</a></td>
 <td></td>
@@ -525,7 +533,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-304">RAT-304</a></td>
 <td></td>
@@ -533,7 +541,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-297">RAT-297</a></td>
 <td></td>
@@ -541,7 +549,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-289">RAT-289</a></td>
 <td></td>
@@ -549,7 +557,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-287">RAT-287</a></td>
 <td>site</td>
@@ -557,7 +565,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-285">RAT-285</a></td>
 <td></td>
@@ -565,7 +573,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-277">RAT-277</a></td>
 <td></td>
@@ -573,7 +581,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-274">RAT-274</a></td>
 <td></td>
@@ -581,7 +589,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-270">RAT-270</a></td>
 <td></td>
@@ -589,7 +597,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-269">RAT-269</a></td>
 <td></td>
@@ -597,7 +605,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-266">RAT-266</a></td>
 <td>maven</td>
@@ -605,7 +613,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-260">RAT-260</a></td>
 <td></td>
@@ -613,7 +621,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-250">RAT-250</a></td>
 <td></td>
@@ -621,7 +629,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-244">RAT-244</a></td>
 <td></td>
@@ -629,7 +637,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-118">RAT-118</a></td>
 <td>maven</td>
@@ -637,7 +645,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Resolved</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-262">RAT-262</a></td>
 <td>scan</td>
@@ -645,7 +653,7 @@ JIRA Report
 <td>New Feature</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-252">RAT-252</a></td>
 <td></td>
@@ -653,7 +661,7 @@ JIRA Report
 <td>New Feature</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-288">RAT-288</a></td>
 <td>maven</td>
@@ -661,7 +669,7 @@ JIRA Report
 <td>Task</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-279">RAT-279</a></td>
 <td></td>
@@ -669,7 +677,7 @@ JIRA Report
 <td>Task</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-271">RAT-271</a></td>
 <td></td>
@@ -677,7 +685,7 @@ JIRA Report
 <td>Task</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-267">RAT-267</a></td>
 <td>reports</td>
@@ -685,7 +693,7 @@ JIRA Report
 <td>Task</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.14</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-254">RAT-254</a></td>
 <td></td>
@@ -693,7 +701,7 @@ JIRA Report
 <td>Task</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.13</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-242">RAT-242</a></td>
 <td>reports</td>
@@ -701,7 +709,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.13</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-234">RAT-234</a></td>
 <td></td>
@@ -709,7 +717,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.13</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-230">RAT-230</a></td>
 <td>maven</td>
@@ -717,7 +725,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.13</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-229">RAT-229</a></td>
 <td></td>
@@ -725,7 +733,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.13</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-228">RAT-228</a></td>
 <td>antlib</td>
@@ -733,7 +741,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.13</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-224">RAT-224</a></td>
 <td></td>
@@ -741,7 +749,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.13</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-222">RAT-222</a></td>
 <td></td>
@@ -749,7 +757,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.13</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-245">RAT-245</a></td>
 <td></td>
@@ -757,7 +765,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.13</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-243">RAT-243</a></td>
 <td>maven</td>
@@ -765,7 +773,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.13</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-241">RAT-241</a></td>
 <td>maven</td>
@@ -773,7 +781,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.13</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-233">RAT-233</a></td>
 <td></td>
@@ -781,7 +789,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.13</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-232">RAT-232</a></td>
 <td></td>
@@ -789,7 +797,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.13</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-231">RAT-231</a></td>
 <td></td>
@@ -797,7 +805,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.13</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-227">RAT-227</a></td>
 <td>site</td>
@@ -805,7 +813,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.13</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-226">RAT-226</a></td>
 <td>antlib</td>
@@ -813,7 +821,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.13</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-223">RAT-223</a></td>
 <td></td>
@@ -821,7 +829,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.13</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-221">RAT-221</a></td>
 <td>docs</td>
@@ -829,7 +837,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.13</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-218">RAT-218</a></td>
 <td>maven</td>
@@ -837,7 +845,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.13</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-217">RAT-217</a></td>
 <td></td>
@@ -845,7 +853,7 @@ JIRA Report
 <td>Improvement</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.13</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-216">RAT-216</a></td>
 <td></td>
@@ -853,7 +861,7 @@ JIRA Report
 <td>Task</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.12</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-215">RAT-215</a></td>
 <td></td>
@@ -861,7 +869,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Resolved</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.12</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-214">RAT-214</a></td>
 <td></td>
@@ -869,7 +877,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Closed</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.12</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-188">RAT-188</a></td>
 <td>maven</td>
@@ -877,7 +885,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Resolved</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.12</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-180">RAT-180</a></td>
 <td></td>
@@ -885,7 +893,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Resolved</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.12</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-179">RAT-179</a></td>
 <td>antlib, maven</td>
@@ -893,7 +901,7 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Resolved</td></tr>
-<tr class="a">
+<tr class="b">
 <td>0.12</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-177">RAT-177</a></td>
 <td></td>
@@ -901,21 +909,13 @@ JIRA Report
 <td>Bug</td>
 <td>Fixed</td>
 <td>Resolved</td></tr>
-<tr class="b">
+<tr class="a">
 <td>0.12</td>
 <td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-175">RAT-175</a></td>
 <td></td>
 <td>SourceCodeManagementSystems.hasIgnoreFile() should return boolean</td>
 <td>Bug</td>
 <td>Fixed</td>
-<td>Resolved</td></tr>
-<tr class="a">
-<td>0.12</td>
-<td><a class="externalLink" href="https://issues.apache.org/jira/browse/RAT-174">RAT-174</a></td>
-<td></td>
-<td>CDDL1License still very slow</td>
-<td>Bug</td>
-<td>Fixed</td>
 <td>Resolved</td></tr></table></section>
       </div>
     </div>
diff --git a/rat0161/apache-rat/rat-report.html b/rat0161/apache-rat/rat-report.html
index e69cbbda..61bde2e5 100644
--- a/rat0161/apache-rat/rat-report.html
+++ b/rat0161/apache-rat/rat-report.html
@@ -115,7 +115,7 @@ Rat (Release Audit Tool) results
 *****************************************************
 Summary
 -------
-Generated at: 2024-01-16T10:49:41+01:00
+Generated at: 2024-01-16T22:15:56+01:00
 
 Notes: 1
 Binaries: 0
diff --git a/rat0161/apidocs/index-all.html b/rat0161/apidocs/index-all.html
index d3b78c73..74c4051b 100644
--- a/rat0161/apidocs/index-all.html
+++ b/rat0161/apidocs/index-all.html
@@ -100,8 +100,10 @@
 <dd>
 <div class="block">Add a license header to a document.</div>
 </dd>
-<dt><span class="memberNameLink"><a href="org/apache/rat/annotation/AbstractLicenseAppender.html#AbstractLicenseAppender--">AbstractLicenseAppender()</a></span> - Constructor for class org.apache.rat.annotation.<a href="org/apache/rat/annotation/AbstractLicenseAppender.html" title="class in org.apache.rat.annotation">AbstractLicenseAppender</a></dt>
-<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/rat/annotation/AbstractLicenseAppender.html#AbstractLicenseAppender-org.apache.rat.utils.Log-">AbstractLicenseAppender(Log)</a></span> - Constructor for class org.apache.rat.annotation.<a href="org/apache/rat/annotation/AbstractLicenseAppender.html" title="class in org.apache.rat.annotation">AbstractLicenseAppender</a></dt>
+<dd>
+<div class="block">Constructor</div>
+</dd>
 <dt><a href="org/apache/rat/analysis/matchers/AbstractMatcherContainer.html" title="class in org.apache.rat.analysis.matchers"><span class="typeNameLink">AbstractMatcherContainer</span></a> - Class in <a href="org/apache/rat/analysis/matchers/package-summary.html">org.apache.rat.analysis.matchers</a></dt>
 <dd>
 <div class="block">A class that implements IHeaderMatcher as a collection of other IHeaderMatchers.</div>
@@ -364,11 +366,11 @@
 <div class="block">Add an Apache License V2 license header to a
  document.</div>
 </dd>
-<dt><span class="memberNameLink"><a href="org/apache/rat/annotation/ApacheV2LicenseAppender.html#ApacheV2LicenseAppender--">ApacheV2LicenseAppender()</a></span> - Constructor for class org.apache.rat.annotation.<a href="org/apache/rat/annotation/ApacheV2LicenseAppender.html" title="class in org.apache.rat.annotation">ApacheV2LicenseAppender</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/rat/annotation/ApacheV2LicenseAppender.html#ApacheV2LicenseAppender-org.apache.rat.utils.Log-">ApacheV2LicenseAppender(Log)</a></span> - Constructor for class org.apache.rat.annotation.<a href="org/apache/rat/annotation/ApacheV2LicenseAppender.html" title="class in org.apache.rat.annotation">ApacheV2LicenseAppender</a></dt>
 <dd>
 <div class="block">Create a license appender with the standard ASF license header.</div>
 </dd>
-<dt><span class="memberNameLink"><a href="org/apache/rat/annotation/ApacheV2LicenseAppender.html#ApacheV2LicenseAppender-java.lang.String-">ApacheV2LicenseAppender(String)</a></span> - Constructor for class org.apache.rat.annotation.<a href="org/apache/rat/annotation/ApacheV2LicenseAppender.html" title="class in org.apache.rat.annotation">ApacheV2LicenseAppender</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/rat/annotation/ApacheV2LicenseAppender.html#ApacheV2LicenseAppender-org.apache.rat.utils.Log-java.lang.String-">ApacheV2LicenseAppender(Log, String)</a></span> - Constructor for class org.apache.rat.annotation.<a href="org/apache/rat/annotation/ApacheV2LicenseAppender.html" title="class in org.apache.rat.annotation">ApacheV2LicenseAppender</a></dt>
 <dd>
 <div class="block">Create a license appender with the given copyright line.</div>
 </dd>
@@ -662,7 +664,7 @@
 <dd>
 <div class="block">Creates the spdx matcher.</div>
 </dd>
-<dt><span class="memberNameLink"><a href="org/apache/rat/analysis/DefaultAnalyserFactory.html#createDefaultAnalyser-java.util.Collection-">createDefaultAnalyser(Collection&lt;ILicense&gt;)</a></span> - Static method in class org.apache.rat.analysis.<a href="org/apache/rat/analysis/DefaultAnalyserFactory.html" title="class in org.apache.rat.analysis">DefaultAnalyserFactory</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/rat/analysis/DefaultAnalyserFactory.html#createDefaultAnalyser-org.apache.rat.utils.Log-java.util.Collection-">createDefaultAnalyser(Log, Collection&lt;ILicense&gt;)</a></span> - Static method in class org.apache.rat.analysis.<a href="org/apache/rat/analysis/DefaultAnalyserFactory.html" title="class in org.apache.rat.analysis">DefaultAnalyserFactory</a></dt>
 <dd>
 <div class="block">Creates a DocumentAnalyser from a collection of ILicenses.</div>
 </dd>
@@ -698,6 +700,8 @@
 <dd>
 <div class="block">Constructs a datum.</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/rat/utils/Log.html#debug-java.lang.Object-">debug(Object)</a></span> - Method in interface org.apache.rat.utils.<a href="org/apache/rat/utils/Log.html" title="interface in org.apache.rat.utils">Log</a></dt>
+<dd>&nbsp;</dd>
 <dt><a href="org/apache/rat/analysis/DefaultAnalyserFactory.html" title="class in org.apache.rat.analysis"><span class="typeNameLink">DefaultAnalyserFactory</span></a> - Class in <a href="org/apache/rat/analysis/package-summary.html">org.apache.rat.analysis</a></dt>
 <dd>
 <div class="block">Creates default analysers.</div>
@@ -806,6 +810,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/rat/utils/ReportingSet.html#equals-java.lang.Object-">equals(Object)</a></span> - Method in class org.apache.rat.utils.<a href="org/apache/rat/utils/ReportingSet.html" title="class in org.apache.rat.utils">ReportingSet</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/rat/utils/Log.html#error-java.lang.Object-">error(Object)</a></span> - Method in interface org.apache.rat.utils.<a href="org/apache/rat/utils/Log.html" title="interface in org.apache.rat.utils">Log</a></dt>
+<dd>&nbsp;</dd>
 <dt><a href="org/apache/rat/mp/util/ExclusionHelper.html" title="class in org.apache.rat.mp.util"><span class="typeNameLink">ExclusionHelper</span></a> - Class in <a href="org/apache/rat/mp/util/package-summary.html">org.apache.rat.mp.util</a></dt>
 <dd>
 <div class="block">This class encapsulates the file/directory exclusion handling of RAT.</div>
@@ -1425,6 +1431,8 @@
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/rat/license/ILicenseFamilyBuilder.html#ILicenseFamilyBuilder--">ILicenseFamilyBuilder()</a></span> - Constructor for class org.apache.rat.license.<a href="org/apache/rat/license/ILicenseFamilyBuilder.html" title="class in org.apache.rat.license">ILicenseFamilyBuilder</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/rat/utils/Log.html#info-java.lang.Object-">info(Object)</a></span> - Method in interface org.apache.rat.utils.<a href="org/apache/rat/utils/Log.html" title="interface in org.apache.rat.utils">Log</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/rat/Defaults.html#init--">init()</a></span> - Static method in class org.apache.rat.<a href="org/apache/rat/Defaults.html" title="class in org.apache.rat">Defaults</a></dt>
 <dd>
 <div class="block">Initialize the system configuration reader..</div>
@@ -1582,7 +1590,7 @@
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/rat/report/claim/util/LicenseAddingReport.html" title="class in org.apache.rat.report.claim.util"><span class="typeNameLink">LicenseAddingReport</span></a> - Class in <a href="org/apache/rat/report/claim/util/package-summary.html">org.apache.rat.report.claim.util</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/rat/report/claim/util/LicenseAddingReport.html#LicenseAddingReport-java.lang.String-boolean-">LicenseAddingReport(String, boolean)</a></span> - Constructor for class org.apache.rat.report.claim.util.<a href="org/apache/rat/report/claim/util/LicenseAddingReport.html" title="class in org.apache.rat.report.claim.util">LicenseAddingReport</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/rat/report/claim/util/LicenseAddingReport.html#LicenseAddingReport-org.apache.rat.utils.Log-java.lang.String-boolean-">LicenseAddingReport(Log, String, boolean)</a></span> - Constructor for class org.apache.rat.report.claim.util.<a href="org/apache/rat/report/claim/util/LicenseAddingReport.html" title="class in org.apache.rat.report.claim.util">LicenseAddingReport</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/rat/ReportConfiguration.html#licenseDuplicateOption-org.apache.rat.utils.ReportingSet.Options-">licenseDuplicateOption(ReportingSet.Options)</a></span> - Method in class org.apache.rat.<a href="org/apache/rat/ReportConfiguration.html" title="class in org.apache.rat">ReportConfiguration</a></dt>
 <dd>
@@ -1646,6 +1654,8 @@
 <dd>
 <div class="block">Writes a message at a specific log level.</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/rat/utils/Log.html#log-org.apache.rat.utils.Log.Level-java.lang.Object-">log(Log.Level, Object)</a></span> - Method in interface org.apache.rat.utils.<a href="org/apache/rat/utils/Log.html" title="interface in org.apache.rat.utils">Log</a></dt>
+<dd>&nbsp;</dd>
 <dt><a href="org/apache/rat/utils/Log.Level.html" title="enum in org.apache.rat.utils"><span class="typeNameLink">Log.Level</span></a> - Enum in <a href="org/apache/rat/utils/package-summary.html">org.apache.rat.utils</a></dt>
 <dd>
 <div class="block">The log levels supported by logging.</div>
@@ -2410,6 +2420,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/rat/analysis/matchers/OrMatcher.html#reset--">reset()</a></span> - Method in class org.apache.rat.analysis.matchers.<a href="org/apache/rat/analysis/matchers/OrMatcher.html" title="class in org.apache.rat.analysis.matchers">OrMatcher</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/rat/analysis/matchers/SPDXMatcherFactory.Match.html#reset--">reset()</a></span> - Method in class org.apache.rat.analysis.matchers.<a href="org/apache/rat/analysis/matchers/SPDXMatcherFactory.Match.html" title="class in org.apache.rat.analysis.matchers">SPDXMatcherFactory.Match</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/rat/analysis/UnknownLicense.html#reset--">reset()</a></span> - Method in class org.apache.rat.analysis.<a href="org/apache/rat/analysis/UnknownLicense.html" title="class in org.apache.rat.analysis">UnknownLicense</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/rat/utils/ReportingSet.html#retainAll-java.util.Collection-">retainAll(Collection&lt;?&gt;)</a></span> - Method in class org.apache.rat.utils.<a href="org/apache/rat/utils/ReportingSet.html" title="class in org.apache.rat.utils">ReportingSet</a></dt>
@@ -2564,6 +2576,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/rat/ReportConfiguration.html#setInputFileFilter-java.io.FilenameFilter-">setInputFileFilter(FilenameFilter)</a></span> - Method in class org.apache.rat.<a href="org/apache/rat/ReportConfiguration.html" title="class in org.apache.rat">ReportConfiguration</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/rat/utils/DefaultLog.html#setLevel-org.apache.rat.utils.Log.Level-">setLevel(Log.Level)</a></span> - Method in class org.apache.rat.utils.<a href="org/apache/rat/utils/DefaultLog.html" title="class in org.apache.rat.utils">DefaultLog</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/rat/analysis/license/BaseLicense.html#setLicenseFamilyCategory-java.lang.String-">setLicenseFamilyCategory(String)</a></span> - Method in class org.apache.rat.analysis.license.<a href="org/apache/rat/analysis/license/BaseLicense.html" title="class in org.apache.rat.analysis.license">BaseLicense</a></dt>
 <dd>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span></div>
@@ -3073,6 +3087,8 @@ the order they are declared.</div>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/rat/walker/Walker.html#Walker-java.lang.String-java.io.File-java.io.FilenameFilter-">Walker(String, File, FilenameFilter)</a></span> - Constructor for class org.apache.rat.walker.<a href="org/apache/rat/walker/Walker.html" title="class in org.apache.rat.walker">Walker</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/rat/utils/Log.html#warn-java.lang.Object-">warn(Object)</a></span> - Method in interface org.apache.rat.utils.<a href="org/apache/rat/utils/Log.html" title="interface in org.apache.rat.utils">Log</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/rat/ReportConfiguration.NoCloseOutputStream.html#write-int-">write(int)</a></span> - Method in class org.apache.rat.<a href="org/apache/rat/ReportConfiguration.NoCloseOutputStream.html" title="class in org.apache.rat">ReportConfiguration.NoCloseOutputStream</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/rat/ReportConfiguration.NoCloseOutputStream.html#write-byte:A-int-int-">write(byte[], int, int)</a></span> - Method in class org.apache.rat.<a href="org/apache/rat/ReportConfiguration.NoCloseOutputStream.html" title="class in org.apache.rat">ReportConfiguration.NoCloseOutputStream</a></dt>
diff --git a/rat0161/apidocs/org/apache/rat/ReportConfiguration.html b/rat0161/apidocs/org/apache/rat/ReportConfiguration.html
index 2beadd85..f14f343b 100644
--- a/rat0161/apidocs/org/apache/rat/ReportConfiguration.html
+++ b/rat0161/apidocs/org/apache/rat/ReportConfiguration.html
@@ -747,7 +747,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
 <dd><code>out</code> - The OutputStream supplier that provides the output stream to write
- the report to. (may be null)</dd>
+ the report to. A null value will use System.out.</dd>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../org/apache/rat/ReportConfiguration.NoCloseOutputStream.html" title="class in org.apache.rat"><code>ReportConfiguration.NoCloseOutputStream</code></a></dd>
 </dl>
diff --git a/rat0161/apidocs/org/apache/rat/analysis/DefaultAnalyserFactory.html b/rat0161/apidocs/org/apache/rat/analysis/DefaultAnalyserFactory.html
index 879b9749..71c1e549 100644
--- a/rat0161/apidocs/org/apache/rat/analysis/DefaultAnalyserFactory.html
+++ b/rat0161/apidocs/org/apache/rat/analysis/DefaultAnalyserFactory.html
@@ -149,7 +149,8 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </tr>
 <tr id="i0" class="altColor">
 <td class="colFirst"><code>static <a href="../../../../org/apache/rat/document/IDocumentAnalyser.html" title="interface in org.apache.rat.document">IDocumentAnalyser</a></code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/rat/analysis/DefaultAnalyserFactory.html#createDefaultAnalyser-java.util.Collection-">createDefaultAnalyser</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../org/apache/rat/license/ILicense.html" title="interface in org.apache.rat.license">ILicense</a>&gt;&nbsp;licenses [...]
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/rat/analysis/DefaultAnalyserFactory.html#createDefaultAnalyser-org.apache.rat.utils.Log-java.util.Collection-">createDefaultAnalyser</a></span>(<a href="../../../../org/apache/rat/utils/Log.html" title="interface in org.apache.rat.utils">Log</a>&nbsp;log,
+                     <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../org/apache/rat/license/ILicense.html" title="interface in org.apache.rat.license">ILicense</a>&gt;&nbsp;licenses)</code>
 <div class="block">Creates a DocumentAnalyser from a collection of ILicenses.</div>
 </td>
 </tr>
@@ -192,13 +193,14 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <!--   -->
 </a>
 <h3>Method Detail</h3>
-<a name="createDefaultAnalyser-java.util.Collection-">
+<a name="createDefaultAnalyser-org.apache.rat.utils.Log-java.util.Collection-">
 <!--   -->
 </a>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>createDefaultAnalyser</h4>
-<pre>public static&nbsp;<a href="../../../../org/apache/rat/document/IDocumentAnalyser.html" title="interface in org.apache.rat.document">IDocumentAnalyser</a>&nbsp;createDefaultAnalyser(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../org/apache/rat/license/ILicense.html" title="interface in org.apache.rat.license">ILicense</a>&gt;&nbsp;licenses)</pre>
+<pre>public static&nbsp;<a href="../../../../org/apache/rat/document/IDocumentAnalyser.html" title="interface in org.apache.rat.document">IDocumentAnalyser</a>&nbsp;createDefaultAnalyser(<a href="../../../../org/apache/rat/utils/Log.html" title="interface in org.apache.rat.utils">Log</a>&nbsp;log,
+                                                      <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../org/apache/rat/license/ILicense.html" title="interface in org.apache.rat.license">ILicense</a>&gt;&nbsp;licenses)</pre>
 <div class="block">Creates a DocumentAnalyser from a collection of ILicenses.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
diff --git a/rat0161/apidocs/org/apache/rat/analysis/matchers/SPDXMatcherFactory.Match.html b/rat0161/apidocs/org/apache/rat/analysis/matchers/SPDXMatcherFactory.Match.html
index fc04c71d..87637c4e 100644
--- a/rat0161/apidocs/org/apache/rat/analysis/matchers/SPDXMatcherFactory.Match.html
+++ b/rat0161/apidocs/org/apache/rat/analysis/matchers/SPDXMatcherFactory.Match.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":10};
+var methods = {"i0":10,"i1":10};
 var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -168,13 +168,19 @@ extends <a href="../../../../../org/apache/rat/analysis/matchers/AbstractSimpleM
 <div class="block">Performs the actual match test.</div>
 </td>
 </tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/rat/analysis/matchers/SPDXMatcherFactory.Match.html#reset--">reset</a></span>()</code>
+<div class="block">Resets this state <code>State.i</code>.</div>
+</td>
+</tr>
 </table>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.rat.analysis.matchers.AbstractSimpleMatcher">
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.rat.analysis.matchers.<a href="../../../../../org/apache/rat/analysis/matchers/AbstractSimpleMatcher.html" title="class in org.apache.rat.analysis.matchers">AbstractSimpleMatcher</a></h3>
-<code><a href="../../../../../org/apache/rat/analysis/matchers/AbstractSimpleMatcher.html#currentState--">currentState</a>, <a href="../../../../../org/apache/rat/analysis/matchers/AbstractSimpleMatcher.html#finalizeState--">finalizeState</a>, <a href="../../../../../org/apache/rat/analysis/matchers/AbstractSimpleMatcher.html#matches-java.lang.String-">matches</a>, <a href="../../../../../org/apache/rat/analysis/matchers/AbstractSimpleMatcher.html#reset--">reset</a></code></li>
+<code><a href="../../../../../org/apache/rat/analysis/matchers/AbstractSimpleMatcher.html#currentState--">currentState</a>, <a href="../../../../../org/apache/rat/analysis/matchers/AbstractSimpleMatcher.html#finalizeState--">finalizeState</a>, <a href="../../../../../org/apache/rat/analysis/matchers/AbstractSimpleMatcher.html#matches-java.lang.String-">matches</a></code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.rat.analysis.matchers.AbstractHeaderMatcher">
@@ -207,7 +213,7 @@ extends <a href="../../../../../org/apache/rat/analysis/matchers/AbstractSimpleM
 <a name="doMatch-java.lang.String-">
 <!--   -->
 </a>
-<ul class="blockListLast">
+<ul class="blockList">
 <li class="blockList">
 <h4>doMatch</h4>
 <pre>protected&nbsp;boolean&nbsp;doMatch(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;line)</pre>
@@ -223,6 +229,24 @@ extends <a href="../../../../../org/apache/rat/analysis/matchers/AbstractSimpleM
 </dl>
 </li>
 </ul>
+<a name="reset--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>reset</h4>
+<pre>public&nbsp;void&nbsp;reset()</pre>
+<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/rat/analysis/IHeaderMatcher.html#reset--">IHeaderMatcher</a></code></span></div>
+<div class="block">Resets this state <code>State.i</code>. 
+ If text is being cached this method should clear that cache.</div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a href="../../../../../org/apache/rat/analysis/IHeaderMatcher.html#reset--">reset</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/rat/analysis/IHeaderMatcher.html" title="interface in org.apache.rat.analysis">IHeaderMatcher</a></code></dd>
+<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
+<dd><code><a href="../../../../../org/apache/rat/analysis/matchers/AbstractSimpleMatcher.html#reset--">reset</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/rat/analysis/matchers/AbstractSimpleMatcher.html" title="class in org.apache.rat.analysis.matchers">AbstractSimpleMatcher</a></code></dd>
+</dl>
+</li>
+</ul>
 </li>
 </ul>
 </li>
diff --git a/rat0161/apidocs/org/apache/rat/annotation/AbstractLicenseAppender.html b/rat0161/apidocs/org/apache/rat/annotation/AbstractLicenseAppender.html
index 5c44dce1..baa8e7b2 100644
--- a/rat0161/apidocs/org/apache/rat/annotation/AbstractLicenseAppender.html
+++ b/rat0161/apidocs/org/apache/rat/annotation/AbstractLicenseAppender.html
@@ -137,7 +137,9 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <th class="colOne" scope="col">Constructor and Description</th>
 </tr>
 <tr class="altColor">
-<td class="colOne"><code><span class="memberNameLink"><a href="../../../../org/apache/rat/annotation/AbstractLicenseAppender.html#AbstractLicenseAppender--">AbstractLicenseAppender</a></span>()</code>&nbsp;</td>
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../org/apache/rat/annotation/AbstractLicenseAppender.html#AbstractLicenseAppender-org.apache.rat.utils.Log-">AbstractLicenseAppender</a></span>(<a href="../../../../org/apache/rat/utils/Log.html" title="interface in org.apache.rat.utils">Log</a>&nbsp;log)</code>
+<div class="block">Constructor</div>
+</td>
 </tr>
 </table>
 </li>
@@ -220,13 +222,18 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <!--   -->
 </a>
 <h3>Constructor Detail</h3>
-<a name="AbstractLicenseAppender--">
... 1355 lines suppressed ...