You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2013/05/08 21:32:41 UTC
svn commit: r861378 [12/41] - in
/websites/production/commons/content/proper/commons-io: ./ apidocs/
apidocs/org/apache/commons/io/ apidocs/src-html/org/apache/commons/io/
cobertura/ xref/org/apache/commons/io/
Modified: websites/production/commons/content/proper/commons-io/cobertura/org.apache.commons.io.FilenameUtils.html
==============================================================================
--- websites/production/commons/content/proper/commons-io/cobertura/org.apache.commons.io.FilenameUtils.html (original)
+++ websites/production/commons/content/proper/commons-io/cobertura/org.apache.commons.io.FilenameUtils.html Wed May 8 19:32:39 2013
@@ -205,7 +205,7 @@
<td class="src"><pre class="src"> <span class="comment"> * @since 1.4</span></pre></td></tr>
<tr> <td class="numLine"> 94</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
-<tr> <td class="numLineCover"> 95</td> <td class="nbHitsCovered"> 124</td> <td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">final</span> String EXTENSION_SEPARATOR_STR = Character.toString(EXTENSION_SEPARATOR);</pre></td></tr>
+<tr> <td class="numLineCover"> 95</td> <td class="nbHitsCovered"> 31</td> <td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">final</span> String EXTENSION_SEPARATOR_STR = Character.toString(EXTENSION_SEPARATOR);</pre></td></tr>
<tr> <td class="numLine"> 96</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 97</td> <td class="nbHits"> </td>
@@ -234,7 +234,7 @@
<td class="src"><pre class="src"> <span class="comment"> * The system separator character.</span></pre></td></tr>
<tr> <td class="numLine"> 109</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
-<tr> <td class="numLineCover"> 110</td> <td class="nbHitsCovered"> 124</td> <td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">final</span> <span class="keyword">char</span> SYSTEM_SEPARATOR = File.separatorChar;</pre></td></tr>
+<tr> <td class="numLineCover"> 110</td> <td class="nbHitsCovered"> 31</td> <td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">final</span> <span class="keyword">char</span> SYSTEM_SEPARATOR = File.separatorChar;</pre></td></tr>
<tr> <td class="numLine"> 111</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 112</td> <td class="nbHits"> </td>
@@ -247,14 +247,14 @@
<td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">final</span> <span class="keyword">char</span> OTHER_SEPARATOR;</pre></td></tr>
<tr> <td class="numLine"> 116</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">static</span> {</pre></td></tr>
-<tr> <td class="numLineCover"> 117</td> <td class="nbHitsCovered"> 124</td> <td class="src"><pre class="src"> <span class="keyword">if</span> (isSystemWindows()) {</pre></td></tr>
-<tr> <td class="numLineCover"> 118</td> <td class="nbHitsCovered"> 124</td> <td class="src"><pre class="src"> OTHER_SEPARATOR = UNIX_SEPARATOR;</pre></td></tr>
+<tr> <td class="numLineCover"> 117</td> <td class="nbHitsCovered"> 31</td> <td class="src"><pre class="src"> <span class="keyword">if</span> (isSystemWindows()) {</pre></td></tr>
+<tr> <td class="numLineCover"> 118</td> <td class="nbHitsCovered"> 31</td> <td class="src"><pre class="src"> OTHER_SEPARATOR = UNIX_SEPARATOR;</pre></td></tr>
<tr> <td class="numLine"> 119</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> } <span class="keyword">else</span> {</pre></td></tr>
<tr> <td class="numLineCover"> 120</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> OTHER_SEPARATOR = WINDOWS_SEPARATOR;</span></pre></td></tr>
<tr> <td class="numLine"> 121</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 122</td> <td class="nbHitsCovered"> 124</td> <td class="src"><pre class="src"> }</pre></td></tr>
+<tr> <td class="numLineCover"> 122</td> <td class="nbHitsCovered"> 31</td> <td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 123</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 124</td> <td class="nbHits"> </td>
@@ -283,7 +283,7 @@
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine"> 137</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">static</span> <span class="keyword">boolean</span> isSystemWindows() {</pre></td></tr>
-<tr> <td class="numLineCover"> 138</td> <td class="nbHitsUncovered"><a title="Line 138: Conditional coverage 50% (1/2)."> 3748</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 138: Conditional coverage 50% (1/2)."> <span class="keyword">return</span> SYSTEM_SEPARATOR == WINDOWS_SEPARATOR;</a></span></pre></td></tr>
+<tr> <td class="numLineCover"> 138</td> <td class="nbHitsUncovered"><a title="Line 138: Conditional coverage 50% (1/2)."> 937</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 138: Conditional coverage 50% (1/2)."> <span class="keyword">return</span> SYSTEM_SEPARATOR == WINDOWS_SEPARATOR;</a></span></pre></td></tr>
<tr> <td class="numLine"> 139</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 140</td> <td class="nbHits"> </td>
@@ -304,7 +304,7 @@
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine"> 148</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">boolean</span> isSeparator(<span class="keyword">final</span> <span class="keyword">char</span> ch) {</pre></td></tr>
-<tr> <td class="numLineCover"> 149</td> <td class="nbHitsCovered"><a title="Line 149: Conditional coverage 100% (4/4) [each condition: 100%, 100%]."> 2852</a></td> <td class="src"><pre class="src"> <a title="Line 149: Conditional coverage 100% (4/4) [each condition: 100%, 100%]."> <span class="keyword">return</span> ch == UNIX_SEPARATOR || ch == WINDOWS_SEPARATOR;</a></pre></td></tr>
+<tr> <td class="numLineCover"> 149</td> <td class="nbHitsCovered"><a title="Line 149: Conditional coverage 100% (4/4) [each condition: 100%, 100%]."> 713</a></td> <td class="src"><pre class="src"> <a title="Line 149: Conditional coverage 100% (4/4) [each condition: 100%, 100%]."> <span class="keyword">return</span> ch == UNIX_SEPARATOR || ch == WINDOWS_SEPARATOR;</a></pre></td></tr>
<tr> <td class="numLine"> 150</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 151</td> <td class="nbHits"> </td>
@@ -393,7 +393,7 @@
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine"> 193</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">static</span> String normalize(<span class="keyword">final</span> String filename) {</pre></td></tr>
-<tr> <td class="numLineCover"> 194</td> <td class="nbHitsCovered"> 784</td> <td class="src"><pre class="src"> <span class="keyword">return</span> doNormalize(filename, SYSTEM_SEPARATOR, <span class="keyword">true</span>);</pre></td></tr>
+<tr> <td class="numLineCover"> 194</td> <td class="nbHitsCovered"> 196</td> <td class="src"><pre class="src"> <span class="keyword">return</span> doNormalize(filename, SYSTEM_SEPARATOR, <span class="keyword">true</span>);</pre></td></tr>
<tr> <td class="numLine"> 195</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 196</td> <td class="nbHits"> </td>
@@ -486,8 +486,8 @@
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine"> 240</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">static</span> String normalize(<span class="keyword">final</span> String filename, <span class="keyword">final</span> <span class="keyword">boolean</span> unixSeparator) {</pre></td></tr>
-<tr> <td class="numLineCover"> 241</td> <td class="nbHitsCovered"><a title="Line 241: Conditional coverage 100% (2/2)."> 60</a></td> <td class="src"><pre class="src"> <a title="Line 241: Conditional coverage 100% (2/2)."> <span class="keyword">final</span> <span class="keyword">char</span> separator = unixSeparator ? UNIX_SEPARATOR : WINDOWS_SEPARATOR;</a></pre></td></tr>
-<tr> <td class="numLineCover"> 242</td> <td class="nbHitsCovered"> 60</td> <td class="src"><pre class="src"> <span class="keyword">return</span> doNormalize(filename, separator, <span class="keyword">true</span>);</pre></td></tr>
+<tr> <td class="numLineCover"> 241</td> <td class="nbHitsCovered"><a title="Line 241: Conditional coverage 100% (2/2)."> 15</a></td> <td class="src"><pre class="src"> <a title="Line 241: Conditional coverage 100% (2/2)."> <span class="keyword">final</span> <span class="keyword">char</span> separator = unixSeparator ? UNIX_SEPARATOR : WINDOWS_SEPARATOR;</a></pre></td></tr>
+<tr> <td class="numLineCover"> 242</td> <td class="nbHitsCovered"> 15</td> <td class="src"><pre class="src"> <span class="keyword">return</span> doNormalize(filename, separator, <span class="keyword">true</span>);</pre></td></tr>
<tr> <td class="numLine"> 243</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 244</td> <td class="nbHits"> </td>
@@ -578,7 +578,7 @@
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine"> 287</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">static</span> String normalizeNoEndSeparator(<span class="keyword">final</span> String filename) {</pre></td></tr>
-<tr> <td class="numLineCover"> 288</td> <td class="nbHitsCovered"> 552</td> <td class="src"><pre class="src"> <span class="keyword">return</span> doNormalize(filename, SYSTEM_SEPARATOR, <span class="keyword">false</span>);</pre></td></tr>
+<tr> <td class="numLineCover"> 288</td> <td class="nbHitsCovered"> 138</td> <td class="src"><pre class="src"> <span class="keyword">return</span> doNormalize(filename, SYSTEM_SEPARATOR, <span class="keyword">false</span>);</pre></td></tr>
<tr> <td class="numLine"> 289</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 290</td> <td class="nbHits"> </td>
@@ -671,8 +671,8 @@
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine"> 334</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">static</span> String normalizeNoEndSeparator(<span class="keyword">final</span> String filename, <span class="keyword">final</span> <span class="keyword">boolean</span> unixSeparator) {</pre></td></tr>
-<tr> <td class="numLineCover"> 335</td> <td class="nbHitsCovered"><a title="Line 335: Conditional coverage 100% (2/2)."> 16</a></td> <td class="src"><pre class="src"> <a title="Line 335: Conditional coverage 100% (2/2)."> <span class="keyword">final</span> <span class="keyword">char</span> separator = unixSeparator ? UNIX_SEPARATOR : WINDOWS_SEPARATOR;</a></pre></td></tr>
-<tr> <td class="numLineCover"> 336</td> <td class="nbHitsCovered"> 16</td> <td class="src"><pre class="src"> <span class="keyword">return</span> doNormalize(filename, separator, <span class="keyword">false</span>);</pre></td></tr>
+<tr> <td class="numLineCover"> 335</td> <td class="nbHitsCovered"><a title="Line 335: Conditional coverage 100% (2/2)."> 4</a></td> <td class="src"><pre class="src"> <a title="Line 335: Conditional coverage 100% (2/2)."> <span class="keyword">final</span> <span class="keyword">char</span> separator = unixSeparator ? UNIX_SEPARATOR : WINDOWS_SEPARATOR;</a></pre></td></tr>
+<tr> <td class="numLineCover"> 336</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> <span class="keyword">return</span> doNormalize(filename, separator, <span class="keyword">false</span>);</pre></td></tr>
<tr> <td class="numLine"> 337</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 338</td> <td class="nbHits"> </td>
@@ -695,32 +695,32 @@
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine"> 347</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">static</span> String doNormalize(<span class="keyword">final</span> String filename, <span class="keyword">final</span> <span class="keyword">char</span> separator, <span class="keyword">final</span> <span class="keyword">boolean</span> keepSeparator) {</pre></td></tr>
-<tr> <td class="numLineCover"> 348</td> <td class="nbHitsCovered"><a title="Line 348: Conditional coverage 100% (2/2)."> 1412</a></td> <td class="src"><pre class="src"> <a title="Line 348: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (filename == <span class="keyword">null</span>) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 349</td> <td class="nbHitsCovered"> 8</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">null</span>;</pre></td></tr>
+<tr> <td class="numLineCover"> 348</td> <td class="nbHitsCovered"><a title="Line 348: Conditional coverage 100% (2/2)."> 353</a></td> <td class="src"><pre class="src"> <a title="Line 348: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (filename == <span class="keyword">null</span>) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 349</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">null</span>;</pre></td></tr>
<tr> <td class="numLine"> 350</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 351</td> <td class="nbHitsCovered"> 1404</td> <td class="src"><pre class="src"> <span class="keyword">int</span> size = filename.length();</pre></td></tr>
-<tr> <td class="numLineCover"> 352</td> <td class="nbHitsCovered"><a title="Line 352: Conditional coverage 100% (2/2)."> 1404</a></td> <td class="src"><pre class="src"> <a title="Line 352: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (size == 0) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 353</td> <td class="nbHitsCovered"> 40</td> <td class="src"><pre class="src"> <span class="keyword">return</span> filename;</pre></td></tr>
+<tr> <td class="numLineCover"> 351</td> <td class="nbHitsCovered"> 351</td> <td class="src"><pre class="src"> <span class="keyword">int</span> size = filename.length();</pre></td></tr>
+<tr> <td class="numLineCover"> 352</td> <td class="nbHitsCovered"><a title="Line 352: Conditional coverage 100% (2/2)."> 351</a></td> <td class="src"><pre class="src"> <a title="Line 352: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (size == 0) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 353</td> <td class="nbHitsCovered"> 10</td> <td class="src"><pre class="src"> <span class="keyword">return</span> filename;</pre></td></tr>
<tr> <td class="numLine"> 354</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 355</td> <td class="nbHitsCovered"> 1364</td> <td class="src"><pre class="src"> <span class="keyword">final</span> <span class="keyword">int</span> prefix = getPrefixLength(filename);</pre></td></tr>
-<tr> <td class="numLineCover"> 356</td> <td class="nbHitsCovered"><a title="Line 356: Conditional coverage 100% (2/2)."> 1364</a></td> <td class="src"><pre class="src"> <a title="Line 356: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (prefix < 0) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 357</td> <td class="nbHitsCovered"> 68</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">null</span>;</pre></td></tr>
+<tr> <td class="numLineCover"> 355</td> <td class="nbHitsCovered"> 341</td> <td class="src"><pre class="src"> <span class="keyword">final</span> <span class="keyword">int</span> prefix = getPrefixLength(filename);</pre></td></tr>
+<tr> <td class="numLineCover"> 356</td> <td class="nbHitsCovered"><a title="Line 356: Conditional coverage 100% (2/2)."> 341</a></td> <td class="src"><pre class="src"> <a title="Line 356: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (prefix < 0) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 357</td> <td class="nbHitsCovered"> 17</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">null</span>;</pre></td></tr>
<tr> <td class="numLine"> 358</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 359</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
-<tr> <td class="numLineCover"> 360</td> <td class="nbHitsCovered"> 1296</td> <td class="src"><pre class="src"> <span class="keyword">final</span> <span class="keyword">char</span>[] array = <span class="keyword">new</span> <span class="keyword">char</span>[size + 2]; <span class="comment">// +1 for possible extra slash, +2 for arraycopy</span></pre></td></tr>
-<tr> <td class="numLineCover"> 361</td> <td class="nbHitsCovered"> 1296</td> <td class="src"><pre class="src"> filename.getChars(0, filename.length(), array, 0);</pre></td></tr>
+<tr> <td class="numLineCover"> 360</td> <td class="nbHitsCovered"> 324</td> <td class="src"><pre class="src"> <span class="keyword">final</span> <span class="keyword">char</span>[] array = <span class="keyword">new</span> <span class="keyword">char</span>[size + 2]; <span class="comment">// +1 for possible extra slash, +2 for arraycopy</span></pre></td></tr>
+<tr> <td class="numLineCover"> 361</td> <td class="nbHitsCovered"> 324</td> <td class="src"><pre class="src"> filename.getChars(0, filename.length(), array, 0);</pre></td></tr>
<tr> <td class="numLine"> 362</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 363</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">// fix separators throughout</span></pre></td></tr>
-<tr> <td class="numLineCover"> 364</td> <td class="nbHitsCovered"><a title="Line 364: Conditional coverage 100% (2/2)."> 1296</a></td> <td class="src"><pre class="src"> <a title="Line 364: Conditional coverage 100% (2/2)."> <span class="keyword">final</span> <span class="keyword">char</span> otherSeparator = separator == SYSTEM_SEPARATOR ? OTHER_SEPARATOR : SYSTEM_SEPARATOR;</a></pre></td></tr>
-<tr> <td class="numLineCover"> 365</td> <td class="nbHitsCovered"><a title="Line 365: Conditional coverage 100% (2/2)."> 15636</a></td> <td class="src"><pre class="src"> <a title="Line 365: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (<span class="keyword">int</span> i = 0; i < array.length; i++) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 366</td> <td class="nbHitsCovered"><a title="Line 366: Conditional coverage 100% (2/2)."> 14340</a></td> <td class="src"><pre class="src"> <a title="Line 366: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (array[i] == otherSeparator) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 367</td> <td class="nbHitsCovered"> 3572</td> <td class="src"><pre class="src"> array[i] = separator;</pre></td></tr>
+<tr> <td class="numLineCover"> 364</td> <td class="nbHitsCovered"><a title="Line 364: Conditional coverage 100% (2/2)."> 324</a></td> <td class="src"><pre class="src"> <a title="Line 364: Conditional coverage 100% (2/2)."> <span class="keyword">final</span> <span class="keyword">char</span> otherSeparator = separator == SYSTEM_SEPARATOR ? OTHER_SEPARATOR : SYSTEM_SEPARATOR;</a></pre></td></tr>
+<tr> <td class="numLineCover"> 365</td> <td class="nbHitsCovered"><a title="Line 365: Conditional coverage 100% (2/2)."> 3909</a></td> <td class="src"><pre class="src"> <a title="Line 365: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (<span class="keyword">int</span> i = 0; i < array.length; i++) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 366</td> <td class="nbHitsCovered"><a title="Line 366: Conditional coverage 100% (2/2)."> 3585</a></td> <td class="src"><pre class="src"> <a title="Line 366: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (array[i] == otherSeparator) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 367</td> <td class="nbHitsCovered"> 893</td> <td class="src"><pre class="src"> array[i] = separator;</pre></td></tr>
<tr> <td class="numLine"> 368</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 369</td> <td class="nbHits"> </td>
@@ -729,21 +729,21 @@
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 371</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">// add extra separator on the end to simplify code below</span></pre></td></tr>
-<tr> <td class="numLineCover"> 372</td> <td class="nbHitsCovered"> 1296</td> <td class="src"><pre class="src"> <span class="keyword">boolean</span> lastIsDirectory = <span class="keyword">true</span>;</pre></td></tr>
-<tr> <td class="numLineCover"> 373</td> <td class="nbHitsCovered"><a title="Line 373: Conditional coverage 100% (2/2)."> 1296</a></td> <td class="src"><pre class="src"> <a title="Line 373: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (array[size - 1] != separator) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 374</td> <td class="nbHitsCovered"> 1036</td> <td class="src"><pre class="src"> array[size++] = separator;</pre></td></tr>
-<tr> <td class="numLineCover"> 375</td> <td class="nbHitsCovered"> 1036</td> <td class="src"><pre class="src"> lastIsDirectory = <span class="keyword">false</span>;</pre></td></tr>
+<tr> <td class="numLineCover"> 372</td> <td class="nbHitsCovered"> 324</td> <td class="src"><pre class="src"> <span class="keyword">boolean</span> lastIsDirectory = <span class="keyword">true</span>;</pre></td></tr>
+<tr> <td class="numLineCover"> 373</td> <td class="nbHitsCovered"><a title="Line 373: Conditional coverage 100% (2/2)."> 324</a></td> <td class="src"><pre class="src"> <a title="Line 373: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (array[size - 1] != separator) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 374</td> <td class="nbHitsCovered"> 259</td> <td class="src"><pre class="src"> array[size++] = separator;</pre></td></tr>
+<tr> <td class="numLineCover"> 375</td> <td class="nbHitsCovered"> 259</td> <td class="src"><pre class="src"> lastIsDirectory = <span class="keyword">false</span>;</pre></td></tr>
<tr> <td class="numLine"> 376</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 377</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 378</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">// adjoining slashes</span></pre></td></tr>
-<tr> <td class="numLineCover"> 379</td> <td class="nbHitsCovered"><a title="Line 379: Conditional coverage 100% (2/2)."> 9296</a></td> <td class="src"><pre class="src"> <a title="Line 379: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (<span class="keyword">int</span> i = prefix + 1; i < size; i++) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 380</td> <td class="nbHitsCovered"><a title="Line 380: Conditional coverage 100% (4/4) [each condition: 100%, 100%]."> 8000</a></td> <td class="src"><pre class="src"> <a title="Line 380: Conditional coverage 100% (4/4) [each condition: 100%, 100%]."> <span class="keyword">if</span> (array[i] == separator && array[i - 1] == separator) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 381</td> <td class="nbHitsCovered"> 56</td> <td class="src"><pre class="src"> System.arraycopy(array, i, array, i - 1, size - i);</pre></td></tr>
-<tr> <td class="numLineCover"> 382</td> <td class="nbHitsCovered"> 56</td> <td class="src"><pre class="src"> size--;</pre></td></tr>
-<tr> <td class="numLineCover"> 383</td> <td class="nbHitsCovered"> 56</td> <td class="src"><pre class="src"> i--;</pre></td></tr>
+<tr> <td class="numLineCover"> 379</td> <td class="nbHitsCovered"><a title="Line 379: Conditional coverage 100% (2/2)."> 2324</a></td> <td class="src"><pre class="src"> <a title="Line 379: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (<span class="keyword">int</span> i = prefix + 1; i < size; i++) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 380</td> <td class="nbHitsCovered"><a title="Line 380: Conditional coverage 100% (4/4) [each condition: 100%, 100%]."> 2000</a></td> <td class="src"><pre class="src"> <a title="Line 380: Conditional coverage 100% (4/4) [each condition: 100%, 100%]."> <span class="keyword">if</span> (array[i] == separator && array[i - 1] == separator) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 381</td> <td class="nbHitsCovered"> 14</td> <td class="src"><pre class="src"> System.arraycopy(array, i, array, i - 1, size - i);</pre></td></tr>
+<tr> <td class="numLineCover"> 382</td> <td class="nbHitsCovered"> 14</td> <td class="src"><pre class="src"> size--;</pre></td></tr>
+<tr> <td class="numLineCover"> 383</td> <td class="nbHitsCovered"> 14</td> <td class="src"><pre class="src"> i--;</pre></td></tr>
<tr> <td class="numLine"> 384</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 385</td> <td class="nbHits"> </td>
@@ -752,17 +752,17 @@
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 387</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">// dot slash</span></pre></td></tr>
-<tr> <td class="numLineCover"> 388</td> <td class="nbHitsCovered"><a title="Line 388: Conditional coverage 100% (2/2)."> 9048</a></td> <td class="src"><pre class="src"> <a title="Line 388: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (<span class="keyword">int</span> i = prefix + 1; i < size; i++) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 389</td> <td class="nbHitsCovered"><a title="Line 389: Conditional coverage 100% (8/8) [each condition: 100%, 100%, 100%, 100%]."> 7752</a></td> <td class="src"><pre class="src"> <a title="Line 389: Conditional coverage 100% (8/8) [each condition: 100%, 100%, 100%, 100%]."> <span class="keyword">if</span> (array[i] == separator && array[i - 1] == <span class="string">'.'</span> &&</a></pre></td></tr>
+<tr> <td class="numLineCover"> 388</td> <td class="nbHitsCovered"><a title="Line 388: Conditional coverage 100% (2/2)."> 2262</a></td> <td class="src"><pre class="src"> <a title="Line 388: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (<span class="keyword">int</span> i = prefix + 1; i < size; i++) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 389</td> <td class="nbHitsCovered"><a title="Line 389: Conditional coverage 100% (8/8) [each condition: 100%, 100%, 100%, 100%]."> 1938</a></td> <td class="src"><pre class="src"> <a title="Line 389: Conditional coverage 100% (8/8) [each condition: 100%, 100%, 100%, 100%]."> <span class="keyword">if</span> (array[i] == separator && array[i - 1] == <span class="string">'.'</span> &&</a></pre></td></tr>
<tr> <td class="numLine"> 390</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> (i == prefix + 1 || array[i - 2] == separator)) {</pre></td></tr>
-<tr> <td class="numLineCover"> 391</td> <td class="nbHitsCovered"><a title="Line 391: Conditional coverage 100% (2/2)."> 368</a></td> <td class="src"><pre class="src"> <a title="Line 391: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (i == size - 1) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 392</td> <td class="nbHitsCovered"> 176</td> <td class="src"><pre class="src"> lastIsDirectory = <span class="keyword">true</span>;</pre></td></tr>
+<tr> <td class="numLineCover"> 391</td> <td class="nbHitsCovered"><a title="Line 391: Conditional coverage 100% (2/2)."> 92</a></td> <td class="src"><pre class="src"> <a title="Line 391: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (i == size - 1) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 392</td> <td class="nbHitsCovered"> 44</td> <td class="src"><pre class="src"> lastIsDirectory = <span class="keyword">true</span>;</pre></td></tr>
<tr> <td class="numLine"> 393</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 394</td> <td class="nbHitsCovered"> 368</td> <td class="src"><pre class="src"> System.arraycopy(array, i + 1, array, i - 1, size - i);</pre></td></tr>
-<tr> <td class="numLineCover"> 395</td> <td class="nbHitsCovered"> 368</td> <td class="src"><pre class="src"> size -=2;</pre></td></tr>
-<tr> <td class="numLineCover"> 396</td> <td class="nbHitsCovered"> 368</td> <td class="src"><pre class="src"> i--;</pre></td></tr>
+<tr> <td class="numLineCover"> 394</td> <td class="nbHitsCovered"> 92</td> <td class="src"><pre class="src"> System.arraycopy(array, i + 1, array, i - 1, size - i);</pre></td></tr>
+<tr> <td class="numLineCover"> 395</td> <td class="nbHitsCovered"> 92</td> <td class="src"><pre class="src"> size -=2;</pre></td></tr>
+<tr> <td class="numLineCover"> 396</td> <td class="nbHitsCovered"> 92</td> <td class="src"><pre class="src"> i--;</pre></td></tr>
<tr> <td class="numLine"> 397</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 398</td> <td class="nbHits"> </td>
@@ -773,56 +773,56 @@
<td class="src"><pre class="src"> <span class="comment">// double dot slash</span></pre></td></tr>
<tr> <td class="numLine"> 401</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> outer:</pre></td></tr>
-<tr> <td class="numLineCover"> 402</td> <td class="nbHitsCovered"><a title="Line 402: Conditional coverage 100% (2/2)."> 6244</a></td> <td class="src"><pre class="src"> <a title="Line 402: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (<span class="keyword">int</span> i = prefix + 2; i < size; i++) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 403</td> <td class="nbHitsUncovered"><a title="Line 403: Conditional coverage 80% (8/10) [each condition: 100%, 100%, 50%, 100%, 50%]."> 5172</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 403: Conditional coverage 80% (8/10) [each condition: 100%, 100%, 50%, 100%, 50%]."> <span class="keyword">if</span> (array[i] == separator && array[i - 1] == <span class="string">'.'</span> && array[i - 2] == <span class="string">'.'</span> &&</a></span></pre></td></tr>
+<tr> <td class="numLineCover"> 402</td> <td class="nbHitsCovered"><a title="Line 402: Conditional coverage 100% (2/2)."> 1561</a></td> <td class="src"><pre class="src"> <a title="Line 402: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (<span class="keyword">int</span> i = prefix + 2; i < size; i++) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 403</td> <td class="nbHitsUncovered"><a title="Line 403: Conditional coverage 80% (8/10) [each condition: 100%, 100%, 50%, 100%, 50%]."> 1293</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 403: Conditional coverage 80% (8/10) [each condition: 100%, 100%, 50%, 100%, 50%]."> <span class="keyword">if</span> (array[i] == separator && array[i - 1] == <span class="string">'.'</span> && array[i - 2] == <span class="string">'.'</span> &&</a></span></pre></td></tr>
<tr> <td class="numLine"> 404</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> (i == prefix + 2 || array[i - 3] == separator)) {</pre></td></tr>
-<tr> <td class="numLineCover"> 405</td> <td class="nbHitsCovered"><a title="Line 405: Conditional coverage 100% (2/2)."> 1008</a></td> <td class="src"><pre class="src"> <a title="Line 405: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (i == prefix + 2) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 406</td> <td class="nbHitsCovered"> 224</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">null</span>;</pre></td></tr>
+<tr> <td class="numLineCover"> 405</td> <td class="nbHitsCovered"><a title="Line 405: Conditional coverage 100% (2/2)."> 252</a></td> <td class="src"><pre class="src"> <a title="Line 405: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (i == prefix + 2) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 406</td> <td class="nbHitsCovered"> 56</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">null</span>;</pre></td></tr>
<tr> <td class="numLine"> 407</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 408</td> <td class="nbHitsCovered"><a title="Line 408: Conditional coverage 100% (2/2)."> 784</a></td> <td class="src"><pre class="src"> <a title="Line 408: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (i == size - 1) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 409</td> <td class="nbHitsCovered"> 128</td> <td class="src"><pre class="src"> lastIsDirectory = <span class="keyword">true</span>;</pre></td></tr>
+<tr> <td class="numLineCover"> 408</td> <td class="nbHitsCovered"><a title="Line 408: Conditional coverage 100% (2/2)."> 196</a></td> <td class="src"><pre class="src"> <a title="Line 408: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (i == size - 1) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 409</td> <td class="nbHitsCovered"> 32</td> <td class="src"><pre class="src"> lastIsDirectory = <span class="keyword">true</span>;</pre></td></tr>
<tr> <td class="numLine"> 410</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 411</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">int</span> j;</pre></td></tr>
-<tr> <td class="numLineCover"> 412</td> <td class="nbHitsCovered"><a title="Line 412: Conditional coverage 100% (2/2)."> 1568</a></td> <td class="src"><pre class="src"> <a title="Line 412: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (j = i - 4 ; j >= prefix; j--) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 413</td> <td class="nbHitsCovered"><a title="Line 413: Conditional coverage 100% (2/2)."> 1328</a></td> <td class="src"><pre class="src"> <a title="Line 413: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (array[j] == separator) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 412</td> <td class="nbHitsCovered"><a title="Line 412: Conditional coverage 100% (2/2)."> 392</a></td> <td class="src"><pre class="src"> <a title="Line 412: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (j = i - 4 ; j >= prefix; j--) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 413</td> <td class="nbHitsCovered"><a title="Line 413: Conditional coverage 100% (2/2)."> 332</a></td> <td class="src"><pre class="src"> <a title="Line 413: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (array[j] == separator) {</a></pre></td></tr>
<tr> <td class="numLine"> 414</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">// remove b/../ from a/b/../c</span></pre></td></tr>
-<tr> <td class="numLineCover"> 415</td> <td class="nbHitsCovered"> 544</td> <td class="src"><pre class="src"> System.arraycopy(array, i + 1, array, j + 1, size - i);</pre></td></tr>
-<tr> <td class="numLineCover"> 416</td> <td class="nbHitsCovered"> 544</td> <td class="src"><pre class="src"> size -= i - j;</pre></td></tr>
-<tr> <td class="numLineCover"> 417</td> <td class="nbHitsCovered"> 544</td> <td class="src"><pre class="src"> i = j + 1;</pre></td></tr>
-<tr> <td class="numLineCover"> 418</td> <td class="nbHitsCovered"> 544</td> <td class="src"><pre class="src"> <span class="keyword">continue</span> outer;</pre></td></tr>
+<tr> <td class="numLineCover"> 415</td> <td class="nbHitsCovered"> 136</td> <td class="src"><pre class="src"> System.arraycopy(array, i + 1, array, j + 1, size - i);</pre></td></tr>
+<tr> <td class="numLineCover"> 416</td> <td class="nbHitsCovered"> 136</td> <td class="src"><pre class="src"> size -= i - j;</pre></td></tr>
+<tr> <td class="numLineCover"> 417</td> <td class="nbHitsCovered"> 136</td> <td class="src"><pre class="src"> i = j + 1;</pre></td></tr>
+<tr> <td class="numLineCover"> 418</td> <td class="nbHitsCovered"> 136</td> <td class="src"><pre class="src"> <span class="keyword">continue</span> outer;</pre></td></tr>
<tr> <td class="numLine"> 419</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 420</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 421</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">// remove a/../ from a/../c</span></pre></td></tr>
-<tr> <td class="numLineCover"> 422</td> <td class="nbHitsCovered"> 240</td> <td class="src"><pre class="src"> System.arraycopy(array, i + 1, array, prefix, size - i);</pre></td></tr>
-<tr> <td class="numLineCover"> 423</td> <td class="nbHitsCovered"> 240</td> <td class="src"><pre class="src"> size -= i + 1 - prefix;</pre></td></tr>
-<tr> <td class="numLineCover"> 424</td> <td class="nbHitsCovered"> 240</td> <td class="src"><pre class="src"> i = prefix + 1;</pre></td></tr>
+<tr> <td class="numLineCover"> 422</td> <td class="nbHitsCovered"> 60</td> <td class="src"><pre class="src"> System.arraycopy(array, i + 1, array, prefix, size - i);</pre></td></tr>
+<tr> <td class="numLineCover"> 423</td> <td class="nbHitsCovered"> 60</td> <td class="src"><pre class="src"> size -= i + 1 - prefix;</pre></td></tr>
+<tr> <td class="numLineCover"> 424</td> <td class="nbHitsCovered"> 60</td> <td class="src"><pre class="src"> i = prefix + 1;</pre></td></tr>
<tr> <td class="numLine"> 425</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 426</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 427</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
-<tr> <td class="numLineCover"> 428</td> <td class="nbHitsCovered"><a title="Line 428: Conditional coverage 100% (2/2)."> 1072</a></td> <td class="src"><pre class="src"> <a title="Line 428: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (size <= 0) { <span class="comment">// should never be less than 0</span></a></pre></td></tr>
-<tr> <td class="numLineCover"> 429</td> <td class="nbHitsCovered"> 32</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="string">""</span>;</pre></td></tr>
+<tr> <td class="numLineCover"> 428</td> <td class="nbHitsCovered"><a title="Line 428: Conditional coverage 100% (2/2)."> 268</a></td> <td class="src"><pre class="src"> <a title="Line 428: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (size <= 0) { <span class="comment">// should never be less than 0</span></a></pre></td></tr>
+<tr> <td class="numLineCover"> 429</td> <td class="nbHitsCovered"> 8</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="string">""</span>;</pre></td></tr>
<tr> <td class="numLine"> 430</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 431</td> <td class="nbHitsCovered"><a title="Line 431: Conditional coverage 100% (2/2)."> 1040</a></td> <td class="src"><pre class="src"> <a title="Line 431: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (size <= prefix) { <span class="comment">// should never be less than prefix</span></a></pre></td></tr>
-<tr> <td class="numLineCover"> 432</td> <td class="nbHitsCovered"> 208</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">new</span> String(array, 0, size);</pre></td></tr>
+<tr> <td class="numLineCover"> 431</td> <td class="nbHitsCovered"><a title="Line 431: Conditional coverage 100% (2/2)."> 260</a></td> <td class="src"><pre class="src"> <a title="Line 431: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (size <= prefix) { <span class="comment">// should never be less than prefix</span></a></pre></td></tr>
+<tr> <td class="numLineCover"> 432</td> <td class="nbHitsCovered"> 52</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">new</span> String(array, 0, size);</pre></td></tr>
<tr> <td class="numLine"> 433</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 434</td> <td class="nbHitsCovered"><a title="Line 434: Conditional coverage 100% (4/4) [each condition: 100%, 100%]."> 832</a></td> <td class="src"><pre class="src"> <a title="Line 434: Conditional coverage 100% (4/4) [each condition: 100%, 100%]."> <span class="keyword">if</span> (lastIsDirectory && keepSeparator) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 435</td> <td class="nbHitsCovered"> 152</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">new</span> String(array, 0, size); <span class="comment">// keep trailing separator</span></pre></td></tr>
+<tr> <td class="numLineCover"> 434</td> <td class="nbHitsCovered"><a title="Line 434: Conditional coverage 100% (4/4) [each condition: 100%, 100%]."> 208</a></td> <td class="src"><pre class="src"> <a title="Line 434: Conditional coverage 100% (4/4) [each condition: 100%, 100%]."> <span class="keyword">if</span> (lastIsDirectory && keepSeparator) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 435</td> <td class="nbHitsCovered"> 38</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">new</span> String(array, 0, size); <span class="comment">// keep trailing separator</span></pre></td></tr>
<tr> <td class="numLine"> 436</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 437</td> <td class="nbHitsCovered"> 680</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">new</span> String(array, 0, size - 1); <span class="comment">// lose trailing separator</span></pre></td></tr>
+<tr> <td class="numLineCover"> 437</td> <td class="nbHitsCovered"> 170</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">new</span> String(array, 0, size - 1); <span class="comment">// lose trailing separator</span></pre></td></tr>
<tr> <td class="numLine"> 438</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 439</td> <td class="nbHits"> </td>
@@ -911,30 +911,30 @@
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine"> 481</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">static</span> String concat(<span class="keyword">final</span> String basePath, <span class="keyword">final</span> String fullFilenameToAdd) {</pre></td></tr>
-<tr> <td class="numLineCover"> 482</td> <td class="nbHitsCovered"> 116</td> <td class="src"><pre class="src"> <span class="keyword">final</span> <span class="keyword">int</span> prefix = getPrefixLength(fullFilenameToAdd);</pre></td></tr>
-<tr> <td class="numLineCover"> 483</td> <td class="nbHitsCovered"><a title="Line 483: Conditional coverage 100% (2/2)."> 116</a></td> <td class="src"><pre class="src"> <a title="Line 483: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (prefix < 0) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 484</td> <td class="nbHitsCovered"> 12</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">null</span>;</pre></td></tr>
+<tr> <td class="numLineCover"> 482</td> <td class="nbHitsCovered"> 29</td> <td class="src"><pre class="src"> <span class="keyword">final</span> <span class="keyword">int</span> prefix = getPrefixLength(fullFilenameToAdd);</pre></td></tr>
+<tr> <td class="numLineCover"> 483</td> <td class="nbHitsCovered"><a title="Line 483: Conditional coverage 100% (2/2)."> 29</a></td> <td class="src"><pre class="src"> <a title="Line 483: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (prefix < 0) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 484</td> <td class="nbHitsCovered"> 3</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">null</span>;</pre></td></tr>
<tr> <td class="numLine"> 485</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 486</td> <td class="nbHitsCovered"><a title="Line 486: Conditional coverage 100% (2/2)."> 104</a></td> <td class="src"><pre class="src"> <a title="Line 486: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (prefix > 0) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 487</td> <td class="nbHitsCovered"> 48</td> <td class="src"><pre class="src"> <span class="keyword">return</span> normalize(fullFilenameToAdd);</pre></td></tr>
+<tr> <td class="numLineCover"> 486</td> <td class="nbHitsCovered"><a title="Line 486: Conditional coverage 100% (2/2)."> 26</a></td> <td class="src"><pre class="src"> <a title="Line 486: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (prefix > 0) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 487</td> <td class="nbHitsCovered"> 12</td> <td class="src"><pre class="src"> <span class="keyword">return</span> normalize(fullFilenameToAdd);</pre></td></tr>
<tr> <td class="numLine"> 488</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 489</td> <td class="nbHitsCovered"><a title="Line 489: Conditional coverage 100% (2/2)."> 56</a></td> <td class="src"><pre class="src"> <a title="Line 489: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (basePath == <span class="keyword">null</span>) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 490</td> <td class="nbHitsCovered"> 8</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">null</span>;</pre></td></tr>
+<tr> <td class="numLineCover"> 489</td> <td class="nbHitsCovered"><a title="Line 489: Conditional coverage 100% (2/2)."> 14</a></td> <td class="src"><pre class="src"> <a title="Line 489: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (basePath == <span class="keyword">null</span>) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 490</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">null</span>;</pre></td></tr>
<tr> <td class="numLine"> 491</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 492</td> <td class="nbHitsCovered"> 48</td> <td class="src"><pre class="src"> <span class="keyword">final</span> <span class="keyword">int</span> len = basePath.length();</pre></td></tr>
-<tr> <td class="numLineCover"> 493</td> <td class="nbHitsCovered"><a title="Line 493: Conditional coverage 100% (2/2)."> 48</a></td> <td class="src"><pre class="src"> <a title="Line 493: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (len == 0) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 494</td> <td class="nbHitsCovered"> 8</td> <td class="src"><pre class="src"> <span class="keyword">return</span> normalize(fullFilenameToAdd);</pre></td></tr>
+<tr> <td class="numLineCover"> 492</td> <td class="nbHitsCovered"> 12</td> <td class="src"><pre class="src"> <span class="keyword">final</span> <span class="keyword">int</span> len = basePath.length();</pre></td></tr>
+<tr> <td class="numLineCover"> 493</td> <td class="nbHitsCovered"><a title="Line 493: Conditional coverage 100% (2/2)."> 12</a></td> <td class="src"><pre class="src"> <a title="Line 493: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (len == 0) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 494</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> <span class="keyword">return</span> normalize(fullFilenameToAdd);</pre></td></tr>
<tr> <td class="numLine"> 495</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 496</td> <td class="nbHitsCovered"> 40</td> <td class="src"><pre class="src"> <span class="keyword">final</span> <span class="keyword">char</span> ch = basePath.charAt(len - 1);</pre></td></tr>
-<tr> <td class="numLineCover"> 497</td> <td class="nbHitsCovered"><a title="Line 497: Conditional coverage 100% (2/2)."> 40</a></td> <td class="src"><pre class="src"> <a title="Line 497: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (isSeparator(ch)) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 498</td> <td class="nbHitsCovered"> 16</td> <td class="src"><pre class="src"> <span class="keyword">return</span> normalize(basePath + fullFilenameToAdd);</pre></td></tr>
+<tr> <td class="numLineCover"> 496</td> <td class="nbHitsCovered"> 10</td> <td class="src"><pre class="src"> <span class="keyword">final</span> <span class="keyword">char</span> ch = basePath.charAt(len - 1);</pre></td></tr>
+<tr> <td class="numLineCover"> 497</td> <td class="nbHitsCovered"><a title="Line 497: Conditional coverage 100% (2/2)."> 10</a></td> <td class="src"><pre class="src"> <a title="Line 497: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (isSeparator(ch)) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 498</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> <span class="keyword">return</span> normalize(basePath + fullFilenameToAdd);</pre></td></tr>
<tr> <td class="numLine"> 499</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> } <span class="keyword">else</span> {</pre></td></tr>
-<tr> <td class="numLineCover"> 500</td> <td class="nbHitsCovered"> 24</td> <td class="src"><pre class="src"> <span class="keyword">return</span> normalize(basePath + <span class="string">'/'</span> + fullFilenameToAdd);</pre></td></tr>
+<tr> <td class="numLineCover"> 500</td> <td class="nbHitsCovered"> 6</td> <td class="src"><pre class="src"> <span class="keyword">return</span> normalize(basePath + <span class="string">'/'</span> + fullFilenameToAdd);</pre></td></tr>
<tr> <td class="numLine"> 501</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 502</td> <td class="nbHits"> </td>
@@ -995,25 +995,25 @@
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 530</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">// Fail fast against NullPointerException</span></pre></td></tr>
-<tr> <td class="numLineCover"> 531</td> <td class="nbHitsUncovered"><a title="Line 531: Conditional coverage 50% (1/2)."> 72</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 531: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (canonicalParent == <span class="keyword">null</span>) {</a></span></pre></td></tr>
+<tr> <td class="numLineCover"> 531</td> <td class="nbHitsUncovered"><a title="Line 531: Conditional coverage 50% (1/2)."> 18</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 531: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (canonicalParent == <span class="keyword">null</span>) {</a></span></pre></td></tr>
<tr> <td class="numLineCover"> 532</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">throw</span> <span class="keyword">new</span> IllegalArgumentException(<span class="string">"Directory must not be null"</span>);</span></pre></td></tr>
<tr> <td class="numLine"> 533</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 534</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
-<tr> <td class="numLineCover"> 535</td> <td class="nbHitsUncovered"><a title="Line 535: Conditional coverage 50% (1/2)."> 72</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 535: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (canonicalChild == <span class="keyword">null</span>) {</a></span></pre></td></tr>
+<tr> <td class="numLineCover"> 535</td> <td class="nbHitsUncovered"><a title="Line 535: Conditional coverage 50% (1/2)."> 18</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 535: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (canonicalChild == <span class="keyword">null</span>) {</a></span></pre></td></tr>
<tr> <td class="numLineCover"> 536</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">return</span> <span class="keyword">false</span>;</span></pre></td></tr>
<tr> <td class="numLine"> 537</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 538</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
-<tr> <td class="numLineCover"> 539</td> <td class="nbHitsUncovered"><a title="Line 539: Conditional coverage 50% (1/2)."> 72</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 539: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (IOCase.SYSTEM.checkEquals(canonicalParent, canonicalChild)) {</a></span></pre></td></tr>
+<tr> <td class="numLineCover"> 539</td> <td class="nbHitsUncovered"><a title="Line 539: Conditional coverage 50% (1/2)."> 18</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 539: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (IOCase.SYSTEM.checkEquals(canonicalParent, canonicalChild)) {</a></span></pre></td></tr>
<tr> <td class="numLineCover"> 540</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">return</span> <span class="keyword">false</span>;</span></pre></td></tr>
<tr> <td class="numLine"> 541</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 542</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
-<tr> <td class="numLineCover"> 543</td> <td class="nbHitsCovered"> 72</td> <td class="src"><pre class="src"> <span class="keyword">return</span> IOCase.SYSTEM.checkStartsWith(canonicalChild, canonicalParent);</pre></td></tr>
+<tr> <td class="numLineCover"> 543</td> <td class="nbHitsCovered"> 18</td> <td class="src"><pre class="src"> <span class="keyword">return</span> IOCase.SYSTEM.checkStartsWith(canonicalChild, canonicalParent);</pre></td></tr>
<tr> <td class="numLine"> 544</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 545</td> <td class="nbHits"> </td>
@@ -1034,11 +1034,11 @@
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine"> 553</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">static</span> String separatorsToUnix(<span class="keyword">final</span> String path) {</pre></td></tr>
-<tr> <td class="numLineCover"> 554</td> <td class="nbHitsCovered"><a title="Line 554: Conditional coverage 100% (4/4) [each condition: 100%, 100%]."> 24</a></td> <td class="src"><pre class="src"> <a title="Line 554: Conditional coverage 100% (4/4) [each condition: 100%, 100%]."> <span class="keyword">if</span> (path == <span class="keyword">null</span> || path.indexOf(WINDOWS_SEPARATOR) == -1) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 555</td> <td class="nbHitsCovered"> 12</td> <td class="src"><pre class="src"> <span class="keyword">return</span> path;</pre></td></tr>
+<tr> <td class="numLineCover"> 554</td> <td class="nbHitsCovered"><a title="Line 554: Conditional coverage 100% (4/4) [each condition: 100%, 100%]."> 6</a></td> <td class="src"><pre class="src"> <a title="Line 554: Conditional coverage 100% (4/4) [each condition: 100%, 100%]."> <span class="keyword">if</span> (path == <span class="keyword">null</span> || path.indexOf(WINDOWS_SEPARATOR) == -1) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 555</td> <td class="nbHitsCovered"> 3</td> <td class="src"><pre class="src"> <span class="keyword">return</span> path;</pre></td></tr>
<tr> <td class="numLine"> 556</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 557</td> <td class="nbHitsCovered"> 12</td> <td class="src"><pre class="src"> <span class="keyword">return</span> path.replace(WINDOWS_SEPARATOR, UNIX_SEPARATOR);</pre></td></tr>
+<tr> <td class="numLineCover"> 557</td> <td class="nbHitsCovered"> 3</td> <td class="src"><pre class="src"> <span class="keyword">return</span> path.replace(WINDOWS_SEPARATOR, UNIX_SEPARATOR);</pre></td></tr>
<tr> <td class="numLine"> 558</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 559</td> <td class="nbHits"> </td>
@@ -1057,11 +1057,11 @@
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine"> 566</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">static</span> String separatorsToWindows(<span class="keyword">final</span> String path) {</pre></td></tr>
-<tr> <td class="numLineCover"> 567</td> <td class="nbHitsCovered"><a title="Line 567: Conditional coverage 100% (4/4) [each condition: 100%, 100%]."> 44</a></td> <td class="src"><pre class="src"> <a title="Line 567: Conditional coverage 100% (4/4) [each condition: 100%, 100%]."> <span class="keyword">if</span> (path == <span class="keyword">null</span> || path.indexOf(UNIX_SEPARATOR) == -1) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 568</td> <td class="nbHitsCovered"> 20</td> <td class="src"><pre class="src"> <span class="keyword">return</span> path;</pre></td></tr>
+<tr> <td class="numLineCover"> 567</td> <td class="nbHitsCovered"><a title="Line 567: Conditional coverage 100% (4/4) [each condition: 100%, 100%]."> 11</a></td> <td class="src"><pre class="src"> <a title="Line 567: Conditional coverage 100% (4/4) [each condition: 100%, 100%]."> <span class="keyword">if</span> (path == <span class="keyword">null</span> || path.indexOf(UNIX_SEPARATOR) == -1) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 568</td> <td class="nbHitsCovered"> 5</td> <td class="src"><pre class="src"> <span class="keyword">return</span> path;</pre></td></tr>
<tr> <td class="numLine"> 569</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 570</td> <td class="nbHitsCovered"> 24</td> <td class="src"><pre class="src"> <span class="keyword">return</span> path.replace(UNIX_SEPARATOR, WINDOWS_SEPARATOR);</pre></td></tr>
+<tr> <td class="numLineCover"> 570</td> <td class="nbHitsCovered"> 6</td> <td class="src"><pre class="src"> <span class="keyword">return</span> path.replace(UNIX_SEPARATOR, WINDOWS_SEPARATOR);</pre></td></tr>
<tr> <td class="numLine"> 571</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 572</td> <td class="nbHits"> </td>
@@ -1080,12 +1080,12 @@
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine"> 579</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">static</span> String separatorsToSystem(<span class="keyword">final</span> String path) {</pre></td></tr>
-<tr> <td class="numLineCover"> 580</td> <td class="nbHitsCovered"><a title="Line 580: Conditional coverage 100% (2/2)."> 24</a></td> <td class="src"><pre class="src"> <a title="Line 580: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (path == <span class="keyword">null</span>) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 581</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">null</span>;</pre></td></tr>
+<tr> <td class="numLineCover"> 580</td> <td class="nbHitsCovered"><a title="Line 580: Conditional coverage 100% (2/2)."> 6</a></td> <td class="src"><pre class="src"> <a title="Line 580: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (path == <span class="keyword">null</span>) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 581</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">null</span>;</pre></td></tr>
<tr> <td class="numLine"> 582</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 583</td> <td class="nbHitsUncovered"><a title="Line 583: Conditional coverage 50% (1/2)."> 20</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 583: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (isSystemWindows()) {</a></span></pre></td></tr>
-<tr> <td class="numLineCover"> 584</td> <td class="nbHitsCovered"> 20</td> <td class="src"><pre class="src"> <span class="keyword">return</span> separatorsToWindows(path);</pre></td></tr>
+<tr> <td class="numLineCover"> 583</td> <td class="nbHitsUncovered"><a title="Line 583: Conditional coverage 50% (1/2)."> 5</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 583: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (isSystemWindows()) {</a></span></pre></td></tr>
+<tr> <td class="numLineCover"> 584</td> <td class="nbHitsCovered"> 5</td> <td class="src"><pre class="src"> <span class="keyword">return</span> separatorsToWindows(path);</pre></td></tr>
<tr> <td class="numLine"> 585</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> } <span class="keyword">else</span> {</pre></td></tr>
<tr> <td class="numLineCover"> 586</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">return</span> separatorsToUnix(path);</span></pre></td></tr>
@@ -1175,67 +1175,67 @@
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine"> 629</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">int</span> getPrefixLength(<span class="keyword">final</span> String filename) {</pre></td></tr>
-<tr> <td class="numLineCover"> 630</td> <td class="nbHitsCovered"><a title="Line 630: Conditional coverage 100% (2/2)."> 2236</a></td> <td class="src"><pre class="src"> <a title="Line 630: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (filename == <span class="keyword">null</span>) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 631</td> <td class="nbHitsCovered"> 12</td> <td class="src"><pre class="src"> <span class="keyword">return</span> -1;</pre></td></tr>
+<tr> <td class="numLineCover"> 630</td> <td class="nbHitsCovered"><a title="Line 630: Conditional coverage 100% (2/2)."> 559</a></td> <td class="src"><pre class="src"> <a title="Line 630: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (filename == <span class="keyword">null</span>) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 631</td> <td class="nbHitsCovered"> 3</td> <td class="src"><pre class="src"> <span class="keyword">return</span> -1;</pre></td></tr>
<tr> <td class="numLine"> 632</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 633</td> <td class="nbHitsCovered"> 2224</td> <td class="src"><pre class="src"> <span class="keyword">final</span> <span class="keyword">int</span> len = filename.length();</pre></td></tr>
-<tr> <td class="numLineCover"> 634</td> <td class="nbHitsCovered"><a title="Line 634: Conditional coverage 100% (2/2)."> 2224</a></td> <td class="src"><pre class="src"> <a title="Line 634: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (len == 0) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 635</td> <td class="nbHitsCovered"> 36</td> <td class="src"><pre class="src"> <span class="keyword">return</span> 0;</pre></td></tr>
+<tr> <td class="numLineCover"> 633</td> <td class="nbHitsCovered"> 556</td> <td class="src"><pre class="src"> <span class="keyword">final</span> <span class="keyword">int</span> len = filename.length();</pre></td></tr>
+<tr> <td class="numLineCover"> 634</td> <td class="nbHitsCovered"><a title="Line 634: Conditional coverage 100% (2/2)."> 556</a></td> <td class="src"><pre class="src"> <a title="Line 634: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (len == 0) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 635</td> <td class="nbHitsCovered"> 9</td> <td class="src"><pre class="src"> <span class="keyword">return</span> 0;</pre></td></tr>
<tr> <td class="numLine"> 636</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 637</td> <td class="nbHitsCovered"> 2188</td> <td class="src"><pre class="src"> <span class="keyword">char</span> ch0 = filename.charAt(0);</pre></td></tr>
-<tr> <td class="numLineCover"> 638</td> <td class="nbHitsCovered"><a title="Line 638: Conditional coverage 100% (2/2)."> 2188</a></td> <td class="src"><pre class="src"> <a title="Line 638: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (ch0 == <span class="string">':'</span>) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 639</td> <td class="nbHitsCovered"> 40</td> <td class="src"><pre class="src"> <span class="keyword">return</span> -1;</pre></td></tr>
+<tr> <td class="numLineCover"> 637</td> <td class="nbHitsCovered"> 547</td> <td class="src"><pre class="src"> <span class="keyword">char</span> ch0 = filename.charAt(0);</pre></td></tr>
+<tr> <td class="numLineCover"> 638</td> <td class="nbHitsCovered"><a title="Line 638: Conditional coverage 100% (2/2)."> 547</a></td> <td class="src"><pre class="src"> <a title="Line 638: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (ch0 == <span class="string">':'</span>) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 639</td> <td class="nbHitsCovered"> 10</td> <td class="src"><pre class="src"> <span class="keyword">return</span> -1;</pre></td></tr>
<tr> <td class="numLine"> 640</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 641</td> <td class="nbHitsCovered"><a title="Line 641: Conditional coverage 100% (2/2)."> 2148</a></td> <td class="src"><pre class="src"> <a title="Line 641: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (len == 1) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 642</td> <td class="nbHitsCovered"><a title="Line 642: Conditional coverage 100% (2/2)."> 100</a></td> <td class="src"><pre class="src"> <a title="Line 642: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (ch0 == <span class="string">'~'</span>) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 643</td> <td class="nbHitsCovered"> 44</td> <td class="src"><pre class="src"> <span class="keyword">return</span> 2; <span class="comment">// return a length greater than the input</span></pre></td></tr>
+<tr> <td class="numLineCover"> 641</td> <td class="nbHitsCovered"><a title="Line 641: Conditional coverage 100% (2/2)."> 537</a></td> <td class="src"><pre class="src"> <a title="Line 641: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (len == 1) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 642</td> <td class="nbHitsCovered"><a title="Line 642: Conditional coverage 100% (2/2)."> 25</a></td> <td class="src"><pre class="src"> <a title="Line 642: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (ch0 == <span class="string">'~'</span>) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 643</td> <td class="nbHitsCovered"> 11</td> <td class="src"><pre class="src"> <span class="keyword">return</span> 2; <span class="comment">// return a length greater than the input</span></pre></td></tr>
<tr> <td class="numLine"> 644</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 645</td> <td class="nbHitsCovered"><a title="Line 645: Conditional coverage 100% (2/2)."> 56</a></td> <td class="src"><pre class="src"> <a title="Line 645: Conditional coverage 100% (2/2)."> <span class="keyword">return</span> isSeparator(ch0) ? 1 : 0;</a></pre></td></tr>
+<tr> <td class="numLineCover"> 645</td> <td class="nbHitsCovered"><a title="Line 645: Conditional coverage 100% (2/2)."> 14</a></td> <td class="src"><pre class="src"> <a title="Line 645: Conditional coverage 100% (2/2)."> <span class="keyword">return</span> isSeparator(ch0) ? 1 : 0;</a></pre></td></tr>
<tr> <td class="numLine"> 646</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> } <span class="keyword">else</span> {</pre></td></tr>
-<tr> <td class="numLineCover"> 647</td> <td class="nbHitsCovered"><a title="Line 647: Conditional coverage 100% (2/2)."> 2048</a></td> <td class="src"><pre class="src"> <a title="Line 647: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (ch0 == <span class="string">'~'</span>) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 648</td> <td class="nbHitsCovered"> 468</td> <td class="src"><pre class="src"> <span class="keyword">int</span> posUnix = filename.indexOf(UNIX_SEPARATOR, 1);</pre></td></tr>
-<tr> <td class="numLineCover"> 649</td> <td class="nbHitsCovered"> 468</td> <td class="src"><pre class="src"> <span class="keyword">int</span> posWin = filename.indexOf(WINDOWS_SEPARATOR, 1);</pre></td></tr>
-<tr> <td class="numLineCover"> 650</td> <td class="nbHitsCovered"><a title="Line 650: Conditional coverage 100% (4/4) [each condition: 100%, 100%]."> 468</a></td> <td class="src"><pre class="src"> <a title="Line 650: Conditional coverage 100% (4/4) [each condition: 100%, 100%]."> <span class="keyword">if</span> (posUnix == -1 && posWin == -1) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 651</td> <td class="nbHitsCovered"> 44</td> <td class="src"><pre class="src"> <span class="keyword">return</span> len + 1; <span class="comment">// return a length greater than the input</span></pre></td></tr>
+<tr> <td class="numLineCover"> 647</td> <td class="nbHitsCovered"><a title="Line 647: Conditional coverage 100% (2/2)."> 512</a></td> <td class="src"><pre class="src"> <a title="Line 647: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (ch0 == <span class="string">'~'</span>) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 648</td> <td class="nbHitsCovered"> 117</td> <td class="src"><pre class="src"> <span class="keyword">int</span> posUnix = filename.indexOf(UNIX_SEPARATOR, 1);</pre></td></tr>
+<tr> <td class="numLineCover"> 649</td> <td class="nbHitsCovered"> 117</td> <td class="src"><pre class="src"> <span class="keyword">int</span> posWin = filename.indexOf(WINDOWS_SEPARATOR, 1);</pre></td></tr>
+<tr> <td class="numLineCover"> 650</td> <td class="nbHitsCovered"><a title="Line 650: Conditional coverage 100% (4/4) [each condition: 100%, 100%]."> 117</a></td> <td class="src"><pre class="src"> <a title="Line 650: Conditional coverage 100% (4/4) [each condition: 100%, 100%]."> <span class="keyword">if</span> (posUnix == -1 && posWin == -1) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 651</td> <td class="nbHitsCovered"> 11</td> <td class="src"><pre class="src"> <span class="keyword">return</span> len + 1; <span class="comment">// return a length greater than the input</span></pre></td></tr>
<tr> <td class="numLine"> 652</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 653</td> <td class="nbHitsCovered"><a title="Line 653: Conditional coverage 100% (2/2)."> 424</a></td> <td class="src"><pre class="src"> <a title="Line 653: Conditional coverage 100% (2/2)."> posUnix = posUnix == -1 ? posWin : posUnix;</a></pre></td></tr>
-<tr> <td class="numLineCover"> 654</td> <td class="nbHitsCovered"><a title="Line 654: Conditional coverage 100% (2/2)."> 424</a></td> <td class="src"><pre class="src"> <a title="Line 654: Conditional coverage 100% (2/2)."> posWin = posWin == -1 ? posUnix : posWin;</a></pre></td></tr>
-<tr> <td class="numLineCover"> 655</td> <td class="nbHitsCovered"> 424</td> <td class="src"><pre class="src"> <span class="keyword">return</span> Math.min(posUnix, posWin) + 1;</pre></td></tr>
+<tr> <td class="numLineCover"> 653</td> <td class="nbHitsCovered"><a title="Line 653: Conditional coverage 100% (2/2)."> 106</a></td> <td class="src"><pre class="src"> <a title="Line 653: Conditional coverage 100% (2/2)."> posUnix = posUnix == -1 ? posWin : posUnix;</a></pre></td></tr>
+<tr> <td class="numLineCover"> 654</td> <td class="nbHitsCovered"><a title="Line 654: Conditional coverage 100% (2/2)."> 106</a></td> <td class="src"><pre class="src"> <a title="Line 654: Conditional coverage 100% (2/2)."> posWin = posWin == -1 ? posUnix : posWin;</a></pre></td></tr>
+<tr> <td class="numLineCover"> 655</td> <td class="nbHitsCovered"> 106</td> <td class="src"><pre class="src"> <span class="keyword">return</span> Math.min(posUnix, posWin) + 1;</pre></td></tr>
<tr> <td class="numLine"> 656</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 657</td> <td class="nbHitsCovered"> 1580</td> <td class="src"><pre class="src"> <span class="keyword">final</span> <span class="keyword">char</span> ch1 = filename.charAt(1);</pre></td></tr>
-<tr> <td class="numLineCover"> 658</td> <td class="nbHitsCovered"><a title="Line 658: Conditional coverage 100% (2/2)."> 1580</a></td> <td class="src"><pre class="src"> <a title="Line 658: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (ch1 == <span class="string">':'</span>) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 659</td> <td class="nbHitsCovered"> 540</td> <td class="src"><pre class="src"> ch0 = Character.toUpperCase(ch0);</pre></td></tr>
-<tr> <td class="numLineCover"> 660</td> <td class="nbHitsUncovered"><a title="Line 660: Conditional coverage 75% (3/4) [each condition: 100%, 50%]."> 540</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 660: Conditional coverage 75% (3/4) [each condition: 100%, 50%]."> <span class="keyword">if</span> (ch0 >= <span class="string">'A'</span> && ch0 <= <span class="string">'Z'</span>) {</a></span></pre></td></tr>
-<tr> <td class="numLineCover"> 661</td> <td class="nbHitsCovered"><a title="Line 661: Conditional coverage 100% (4/4) [each condition: 100%, 100%]."> 444</a></td> <td class="src"><pre class="src"> <a title="Line 661: Conditional coverage 100% (4/4) [each condition: 100%, 100%]."> <span class="keyword">if</span> (len == 2 || isSeparator(filename.charAt(2)) == <span class="keyword">false</span>) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 662</td> <td class="nbHitsCovered"> 228</td> <td class="src"><pre class="src"> <span class="keyword">return</span> 2;</pre></td></tr>
+<tr> <td class="numLineCover"> 657</td> <td class="nbHitsCovered"> 395</td> <td class="src"><pre class="src"> <span class="keyword">final</span> <span class="keyword">char</span> ch1 = filename.charAt(1);</pre></td></tr>
+<tr> <td class="numLineCover"> 658</td> <td class="nbHitsCovered"><a title="Line 658: Conditional coverage 100% (2/2)."> 395</a></td> <td class="src"><pre class="src"> <a title="Line 658: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (ch1 == <span class="string">':'</span>) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 659</td> <td class="nbHitsCovered"> 135</td> <td class="src"><pre class="src"> ch0 = Character.toUpperCase(ch0);</pre></td></tr>
+<tr> <td class="numLineCover"> 660</td> <td class="nbHitsUncovered"><a title="Line 660: Conditional coverage 75% (3/4) [each condition: 100%, 50%]."> 135</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 660: Conditional coverage 75% (3/4) [each condition: 100%, 50%]."> <span class="keyword">if</span> (ch0 >= <span class="string">'A'</span> && ch0 <= <span class="string">'Z'</span>) {</a></span></pre></td></tr>
+<tr> <td class="numLineCover"> 661</td> <td class="nbHitsCovered"><a title="Line 661: Conditional coverage 100% (4/4) [each condition: 100%, 100%]."> 111</a></td> <td class="src"><pre class="src"> <a title="Line 661: Conditional coverage 100% (4/4) [each condition: 100%, 100%]."> <span class="keyword">if</span> (len == 2 || isSeparator(filename.charAt(2)) == <span class="keyword">false</span>) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 662</td> <td class="nbHitsCovered"> 57</td> <td class="src"><pre class="src"> <span class="keyword">return</span> 2;</pre></td></tr>
<tr> <td class="numLine"> 663</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 664</td> <td class="nbHitsCovered"> 216</td> <td class="src"><pre class="src"> <span class="keyword">return</span> 3;</pre></td></tr>
+<tr> <td class="numLineCover"> 664</td> <td class="nbHitsCovered"> 54</td> <td class="src"><pre class="src"> <span class="keyword">return</span> 3;</pre></td></tr>
[... 711 lines stripped ...]