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/04/06 18:40:29 UTC
svn commit: r857520 [27/35] - in
/websites/production/commons/content/proper/commons-codec: ./
apidocs/org/apache/commons/codec/binary/
apidocs/org/apache/commons/codec/digest/
apidocs/src-html/org/apache/commons/codec/binary/
apidocs/src-html/org/apac...
Modified: websites/production/commons/content/proper/commons-codec/cobertura/org.apache.commons.codec.language.bm.Rule.html
==============================================================================
--- websites/production/commons/content/proper/commons-codec/cobertura/org.apache.commons.codec.language.bm.Rule.html (original)
+++ websites/production/commons/content/proper/commons-codec/cobertura/org.apache.commons.codec.language.bm.Rule.html Sat Apr 6 16:40:25 2013
@@ -190,36 +190,36 @@
<td class="src"><pre class="src"> <span class="comment"> * @version $Id: Rule.java 1435550 2013-01-19 14:09:52Z tn $</span></pre></td></tr>
<tr> <td class="numLine"> 79</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
-<tr> <td class="numLineCover"> 80</td> <td class="nbHitsCovered"> 424580</td> <td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">class</span> Rule {</pre></td></tr>
+<tr> <td class="numLineCover"> 80</td> <td class="nbHitsCovered"> 318435</td> <td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">class</span> Rule {</pre></td></tr>
<tr> <td class="numLine"> 81</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
-<tr> <td class="numLineCover"> 82</td> <td class="nbHitsCovered"> 19505804</td> <td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">final</span> <span class="keyword">class</span> Phoneme <span class="keyword">implements</span> PhonemeExpr {</pre></td></tr>
-<tr> <td class="numLineCover"> 83</td> <td class="nbHitsCovered"> 368928</td> <td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">final</span> Comparator<Phoneme> COMPARATOR = <span class="keyword">new</span> Comparator<Phoneme>() {</pre></td></tr>
+<tr> <td class="numLineCover"> 82</td> <td class="nbHitsCovered"> 14629353</td> <td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">final</span> <span class="keyword">class</span> Phoneme <span class="keyword">implements</span> PhonemeExpr {</pre></td></tr>
+<tr> <td class="numLineCover"> 83</td> <td class="nbHitsCovered"> 276696</td> <td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">final</span> Comparator<Phoneme> COMPARATOR = <span class="keyword">new</span> Comparator<Phoneme>() {</pre></td></tr>
<tr> <td class="numLine"> 84</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> @Override</pre></td></tr>
<tr> <td class="numLine"> 85</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">int</span> compare(<span class="keyword">final</span> Phoneme o1, <span class="keyword">final</span> Phoneme o2) {</pre></td></tr>
-<tr> <td class="numLineCover"> 86</td> <td class="nbHitsCovered"><a title="Line 86: Conditional coverage 100% (2/2)."> 4882320</a></td> <td class="src"><pre class="src"> <a title="Line 86: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (<span class="keyword">int</span> i = 0; i < o1.phonemeText.length(); i++) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 87</td> <td class="nbHitsCovered"><a title="Line 87: Conditional coverage 100% (2/2)."> 4864604</a></td> <td class="src"><pre class="src"> <a title="Line 87: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (i >= o2.phonemeText.length()) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 88</td> <td class="nbHitsCovered"> 2880</td> <td class="src"><pre class="src"> <span class="keyword">return</span> +1;</pre></td></tr>
+<tr> <td class="numLineCover"> 86</td> <td class="nbHitsCovered"><a title="Line 86: Conditional coverage 100% (2/2)."> 3661740</a></td> <td class="src"><pre class="src"> <a title="Line 86: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (<span class="keyword">int</span> i = 0; i < o1.phonemeText.length(); i++) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 87</td> <td class="nbHitsCovered"><a title="Line 87: Conditional coverage 100% (2/2)."> 3648453</a></td> <td class="src"><pre class="src"> <a title="Line 87: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (i >= o2.phonemeText.length()) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 88</td> <td class="nbHitsCovered"> 2160</td> <td class="src"><pre class="src"> <span class="keyword">return</span> +1;</pre></td></tr>
<tr> <td class="numLine"> 89</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 90</td> <td class="nbHitsCovered"> 4861724</td> <td class="src"><pre class="src"> <span class="keyword">final</span> <span class="keyword">int</span> c = o1.phonemeText.charAt(i) - o2.phonemeText.charAt(i);</pre></td></tr>
-<tr> <td class="numLineCover"> 91</td> <td class="nbHitsCovered"><a title="Line 91: Conditional coverage 100% (2/2)."> 4861724</a></td> <td class="src"><pre class="src"> <a title="Line 91: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (c != 0) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 92</td> <td class="nbHitsCovered"> 348328</td> <td class="src"><pre class="src"> <span class="keyword">return</span> c;</pre></td></tr>
+<tr> <td class="numLineCover"> 90</td> <td class="nbHitsCovered"> 3646293</td> <td class="src"><pre class="src"> <span class="keyword">final</span> <span class="keyword">int</span> c = o1.phonemeText.charAt(i) - o2.phonemeText.charAt(i);</pre></td></tr>
+<tr> <td class="numLineCover"> 91</td> <td class="nbHitsCovered"><a title="Line 91: Conditional coverage 100% (2/2)."> 3646293</a></td> <td class="src"><pre class="src"> <a title="Line 91: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (c != 0) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 92</td> <td class="nbHitsCovered"> 261246</td> <td class="src"><pre class="src"> <span class="keyword">return</span> c;</pre></td></tr>
<tr> <td class="numLine"> 93</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 94</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 95</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
-<tr> <td class="numLineCover"> 96</td> <td class="nbHitsCovered"><a title="Line 96: Conditional coverage 100% (2/2)."> 17716</a></td> <td class="src"><pre class="src"> <a title="Line 96: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (o1.phonemeText.length() < o2.phonemeText.length()) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 97</td> <td class="nbHitsCovered"> 4080</td> <td class="src"><pre class="src"> <span class="keyword">return</span> -1;</pre></td></tr>
+<tr> <td class="numLineCover"> 96</td> <td class="nbHitsCovered"><a title="Line 96: Conditional coverage 100% (2/2)."> 13287</a></td> <td class="src"><pre class="src"> <a title="Line 96: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (o1.phonemeText.length() < o2.phonemeText.length()) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 97</td> <td class="nbHitsCovered"> 3060</td> <td class="src"><pre class="src"> <span class="keyword">return</span> -1;</pre></td></tr>
<tr> <td class="numLine"> 98</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 99</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
-<tr> <td class="numLineCover"> 100</td> <td class="nbHitsCovered"> 13636</td> <td class="src"><pre class="src"> <span class="keyword">return</span> 0;</pre></td></tr>
+<tr> <td class="numLineCover"> 100</td> <td class="nbHitsCovered"> 10227</td> <td class="src"><pre class="src"> <span class="keyword">return</span> 0;</pre></td></tr>
<tr> <td class="numLine"> 101</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 102</td> <td class="nbHits"> </td>
@@ -232,22 +232,22 @@
<td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">final</span> Languages.LanguageSet languages;</pre></td></tr>
<tr> <td class="numLine"> 106</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
-<tr> <td class="numLineCover"> 107</td> <td class="nbHitsCovered"> 2170224</td> <td class="src"><pre class="src"> <span class="keyword">public</span> Phoneme(<span class="keyword">final</span> CharSequence phonemeText, <span class="keyword">final</span> Languages.LanguageSet languages) {</pre></td></tr>
-<tr> <td class="numLineCover"> 108</td> <td class="nbHitsCovered"> 2170224</td> <td class="src"><pre class="src"> <span class="keyword">this</span>.phonemeText = phonemeText;</pre></td></tr>
-<tr> <td class="numLineCover"> 109</td> <td class="nbHitsCovered"> 2170224</td> <td class="src"><pre class="src"> <span class="keyword">this</span>.languages = languages;</pre></td></tr>
-<tr> <td class="numLineCover"> 110</td> <td class="nbHitsCovered"> 2170224</td> <td class="src"><pre class="src"> }</pre></td></tr>
+<tr> <td class="numLineCover"> 107</td> <td class="nbHitsCovered"> 1627668</td> <td class="src"><pre class="src"> <span class="keyword">public</span> Phoneme(<span class="keyword">final</span> CharSequence phonemeText, <span class="keyword">final</span> Languages.LanguageSet languages) {</pre></td></tr>
+<tr> <td class="numLineCover"> 108</td> <td class="nbHitsCovered"> 1627668</td> <td class="src"><pre class="src"> <span class="keyword">this</span>.phonemeText = phonemeText;</pre></td></tr>
+<tr> <td class="numLineCover"> 109</td> <td class="nbHitsCovered"> 1627668</td> <td class="src"><pre class="src"> <span class="keyword">this</span>.languages = languages;</pre></td></tr>
+<tr> <td class="numLineCover"> 110</td> <td class="nbHitsCovered"> 1627668</td> <td class="src"><pre class="src"> }</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>
<td class="src"><pre class="src"> <span class="keyword">public</span> Phoneme append(<span class="keyword">final</span> CharSequence str) {</pre></td></tr>
-<tr> <td class="numLineCover"> 113</td> <td class="nbHitsCovered"> 608908</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">new</span> Phoneme(<span class="keyword">this</span>.phonemeText.toString() + str.toString(), <span class="keyword">this</span>.languages);</pre></td></tr>
+<tr> <td class="numLineCover"> 113</td> <td class="nbHitsCovered"> 456681</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">new</span> Phoneme(<span class="keyword">this</span>.phonemeText.toString() + str.toString(), <span class="keyword">this</span>.languages);</pre></td></tr>
<tr> <td class="numLine"> 114</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 115</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 116</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">public</span> Languages.LanguageSet getLanguages() {</pre></td></tr>
-<tr> <td class="numLineCover"> 117</td> <td class="nbHitsCovered"> 1266792</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">this</span>.languages;</pre></td></tr>
+<tr> <td class="numLineCover"> 117</td> <td class="nbHitsCovered"> 950094</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">this</span>.languages;</pre></td></tr>
<tr> <td class="numLine"> 118</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 119</td> <td class="nbHits"> </td>
@@ -256,21 +256,21 @@
<td class="src"><pre class="src"> @Override</pre></td></tr>
<tr> <td class="numLine"> 121</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">public</span> Iterable<Phoneme> getPhonemes() {</pre></td></tr>
-<tr> <td class="numLineCover"> 122</td> <td class="nbHitsCovered"> 151476</td> <td class="src"><pre class="src"> <span class="keyword">return</span> Collections.singleton(<span class="keyword">this</span>);</pre></td></tr>
+<tr> <td class="numLineCover"> 122</td> <td class="nbHitsCovered"> 113607</td> <td class="src"><pre class="src"> <span class="keyword">return</span> Collections.singleton(<span class="keyword">this</span>);</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>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 125</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">public</span> CharSequence getPhonemeText() {</pre></td></tr>
-<tr> <td class="numLineCover"> 126</td> <td class="nbHitsCovered"> 881456</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">this</span>.phonemeText;</pre></td></tr>
+<tr> <td class="numLineCover"> 126</td> <td class="nbHitsCovered"> 661092</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">this</span>.phonemeText;</pre></td></tr>
<tr> <td class="numLine"> 127</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 128</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 129</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">public</span> Phoneme join(<span class="keyword">final</span> Phoneme right) {</pre></td></tr>
-<tr> <td class="numLineCover"> 130</td> <td class="nbHitsCovered"> 703348</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">new</span> Phoneme(<span class="keyword">this</span>.phonemeText.toString() + right.phonemeText.toString(),</pre></td></tr>
+<tr> <td class="numLineCover"> 130</td> <td class="nbHitsCovered"> 527511</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">new</span> Phoneme(<span class="keyword">this</span>.phonemeText.toString() + right.phonemeText.toString(),</pre></td></tr>
<tr> <td class="numLine"> 131</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">this</span>.languages.restrictTo(right.languages));</pre></td></tr>
<tr> <td class="numLine"> 132</td> <td class="nbHits"> </td>
@@ -287,21 +287,21 @@
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 138</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
-<tr> <td class="numLineCover"> 139</td> <td class="nbHitsCovered"> 254432</td> <td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">final</span> <span class="keyword">class</span> PhonemeList <span class="keyword">implements</span> PhonemeExpr {</pre></td></tr>
+<tr> <td class="numLineCover"> 139</td> <td class="nbHitsCovered"> 190824</td> <td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">final</span> <span class="keyword">class</span> PhonemeList <span class="keyword">implements</span> PhonemeExpr {</pre></td></tr>
<tr> <td class="numLine"> 140</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">final</span> List<Phoneme> phonemes;</pre></td></tr>
<tr> <td class="numLine"> 141</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
-<tr> <td class="numLineCover"> 142</td> <td class="nbHitsCovered"> 5752</td> <td class="src"><pre class="src"> <span class="keyword">public</span> PhonemeList(<span class="keyword">final</span> List<Phoneme> phonemes) {</pre></td></tr>
-<tr> <td class="numLineCover"> 143</td> <td class="nbHitsCovered"> 5752</td> <td class="src"><pre class="src"> <span class="keyword">this</span>.phonemes = phonemes;</pre></td></tr>
-<tr> <td class="numLineCover"> 144</td> <td class="nbHitsCovered"> 5752</td> <td class="src"><pre class="src"> }</pre></td></tr>
+<tr> <td class="numLineCover"> 142</td> <td class="nbHitsCovered"> 4314</td> <td class="src"><pre class="src"> <span class="keyword">public</span> PhonemeList(<span class="keyword">final</span> List<Phoneme> phonemes) {</pre></td></tr>
+<tr> <td class="numLineCover"> 143</td> <td class="nbHitsCovered"> 4314</td> <td class="src"><pre class="src"> <span class="keyword">this</span>.phonemes = phonemes;</pre></td></tr>
+<tr> <td class="numLineCover"> 144</td> <td class="nbHitsCovered"> 4314</td> <td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 145</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 146</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> @Override</pre></td></tr>
<tr> <td class="numLine"> 147</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">public</span> List<Phoneme> getPhonemes() {</pre></td></tr>
-<tr> <td class="numLineCover"> 148</td> <td class="nbHitsCovered"> 254432</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">this</span>.phonemes;</pre></td></tr>
+<tr> <td class="numLineCover"> 148</td> <td class="nbHitsCovered"> 190824</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">this</span>.phonemes;</pre></td></tr>
<tr> <td class="numLine"> 149</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 150</td> <td class="nbHits"> </td>
@@ -322,12 +322,12 @@
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 158</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
-<tr> <td class="numLineCover"> 159</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">final</span> RPattern ALL_STRINGS_RMATCHER = <span class="keyword">new</span> RPattern() {</pre></td></tr>
+<tr> <td class="numLineCover"> 159</td> <td class="nbHitsCovered"> 3</td> <td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">final</span> RPattern ALL_STRINGS_RMATCHER = <span class="keyword">new</span> RPattern() {</pre></td></tr>
<tr> <td class="numLine"> 160</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> @Override</pre></td></tr>
<tr> <td class="numLine"> 161</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">boolean</span> isMatch(<span class="keyword">final</span> CharSequence input) {</pre></td></tr>
-<tr> <td class="numLineCover"> 162</td> <td class="nbHitsCovered"> 264040</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">true</span>;</pre></td></tr>
+<tr> <td class="numLineCover"> 162</td> <td class="nbHitsCovered"> 198030</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">true</span>;</pre></td></tr>
<tr> <td class="numLine"> 163</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 164</td> <td class="nbHits"> </td>
@@ -346,67 +346,67 @@
<td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">final</span> String HASH_INCLUDE = <span class="string">"#include"</span>;</pre></td></tr>
<tr> <td class="numLine"> 171</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
-<tr> <td class="numLineCover"> 172</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">final</span> Map<NameType, Map<RuleType, Map<String, List<Rule>>>> RULES =</pre></td></tr>
+<tr> <td class="numLineCover"> 172</td> <td class="nbHitsCovered"> 3</td> <td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">final</span> Map<NameType, Map<RuleType, Map<String, List<Rule>>>> RULES =</pre></td></tr>
<tr> <td class="numLine"> 173</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">new</span> EnumMap<NameType, Map<RuleType, Map<String, List<Rule>>>>(NameType.<span class="keyword">class</span>);</pre></td></tr>
<tr> <td class="numLine"> 174</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 175</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">static</span> {</pre></td></tr>
-<tr> <td class="numLineCover"> 176</td> <td class="nbHitsCovered"> 16</td> <td class="src"><pre class="src"> <span class="keyword">for</span> (<span class="keyword">final</span> NameType s : NameType.values()) {</pre></td></tr>
-<tr> <td class="numLineCover"> 177</td> <td class="nbHitsCovered"> 12</td> <td class="src"><pre class="src"> <span class="keyword">final</span> Map<RuleType, Map<String, List<Rule>>> rts =</pre></td></tr>
+<tr> <td class="numLineCover"> 176</td> <td class="nbHitsCovered"> 12</td> <td class="src"><pre class="src"> <span class="keyword">for</span> (<span class="keyword">final</span> NameType s : NameType.values()) {</pre></td></tr>
+<tr> <td class="numLineCover"> 177</td> <td class="nbHitsCovered"> 9</td> <td class="src"><pre class="src"> <span class="keyword">final</span> Map<RuleType, Map<String, List<Rule>>> rts =</pre></td></tr>
<tr> <td class="numLine"> 178</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">new</span> EnumMap<RuleType, Map<String, List<Rule>>>(RuleType.<span class="keyword">class</span>);</pre></td></tr>
<tr> <td class="numLine"> 179</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
-<tr> <td class="numLineCover"> 180</td> <td class="nbHitsCovered"> 48</td> <td class="src"><pre class="src"> <span class="keyword">for</span> (<span class="keyword">final</span> RuleType rt : RuleType.values()) {</pre></td></tr>
-<tr> <td class="numLineCover"> 181</td> <td class="nbHitsCovered"> 36</td> <td class="src"><pre class="src"> <span class="keyword">final</span> Map<String, List<Rule>> rs = <span class="keyword">new</span> HashMap<String, List<Rule>>();</pre></td></tr>
+<tr> <td class="numLineCover"> 180</td> <td class="nbHitsCovered"> 36</td> <td class="src"><pre class="src"> <span class="keyword">for</span> (<span class="keyword">final</span> RuleType rt : RuleType.values()) {</pre></td></tr>
+<tr> <td class="numLineCover"> 181</td> <td class="nbHitsCovered"> 27</td> <td class="src"><pre class="src"> <span class="keyword">final</span> Map<String, List<Rule>> rs = <span class="keyword">new</span> HashMap<String, List<Rule>>();</pre></td></tr>
<tr> <td class="numLine"> 182</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
-<tr> <td class="numLineCover"> 183</td> <td class="nbHitsCovered"> 36</td> <td class="src"><pre class="src"> <span class="keyword">final</span> Languages ls = Languages.getInstance(s);</pre></td></tr>
-<tr> <td class="numLineCover"> 184</td> <td class="nbHitsCovered"> 36</td> <td class="src"><pre class="src"> <span class="keyword">for</span> (<span class="keyword">final</span> String l : ls.getLanguages()) {</pre></td></tr>
+<tr> <td class="numLineCover"> 183</td> <td class="nbHitsCovered"> 27</td> <td class="src"><pre class="src"> <span class="keyword">final</span> Languages ls = Languages.getInstance(s);</pre></td></tr>
+<tr> <td class="numLineCover"> 184</td> <td class="nbHitsCovered"> 27</td> <td class="src"><pre class="src"> <span class="keyword">for</span> (<span class="keyword">final</span> String l : ls.getLanguages()) {</pre></td></tr>
<tr> <td class="numLine"> 185</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">try</span> {</pre></td></tr>
-<tr> <td class="numLineCover"> 186</td> <td class="nbHitsCovered"> 432</td> <td class="src"><pre class="src"> rs.put(l, parseRules(createScanner(s, rt, l), createResourceName(s, rt, l)));</pre></td></tr>
+<tr> <td class="numLineCover"> 186</td> <td class="nbHitsCovered"> 324</td> <td class="src"><pre class="src"> rs.put(l, parseRules(createScanner(s, rt, l), createResourceName(s, rt, l)));</pre></td></tr>
<tr> <td class="numLineCover"> 187</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> } <span class="keyword">catch</span> (<span class="keyword">final</span> IllegalStateException e) {</span></pre></td></tr>
<tr> <td class="numLineCover"> 188</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> IllegalStateException(<span class="string">"Problem processing "</span> + createResourceName(s, rt, l), e);</span></pre></td></tr>
-<tr> <td class="numLineCover"> 189</td> <td class="nbHitsCovered"> 432</td> <td class="src"><pre class="src"> }</pre></td></tr>
+<tr> <td class="numLineCover"> 189</td> <td class="nbHitsCovered"> 324</td> <td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 190</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 191</td> <td class="nbHitsCovered"> 36</td> <td class="src"><pre class="src"> <span class="keyword">if</span> (!rt.equals(RuleType.RULES)) {</pre></td></tr>
-<tr> <td class="numLineCover"> 192</td> <td class="nbHitsCovered"> 24</td> <td class="src"><pre class="src"> rs.put(<span class="string">"common"</span>, parseRules(createScanner(s, rt, <span class="string">"common"</span>), createResourceName(s, rt, <span class="string">"common"</span>)));</pre></td></tr>
+<tr> <td class="numLineCover"> 191</td> <td class="nbHitsCovered"> 27</td> <td class="src"><pre class="src"> <span class="keyword">if</span> (!rt.equals(RuleType.RULES)) {</pre></td></tr>
+<tr> <td class="numLineCover"> 192</td> <td class="nbHitsCovered"> 18</td> <td class="src"><pre class="src"> rs.put(<span class="string">"common"</span>, parseRules(createScanner(s, rt, <span class="string">"common"</span>), createResourceName(s, rt, <span class="string">"common"</span>)));</pre></td></tr>
<tr> <td class="numLine"> 193</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 194</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
-<tr> <td class="numLineCover"> 195</td> <td class="nbHitsCovered"> 36</td> <td class="src"><pre class="src"> rts.put(rt, Collections.unmodifiableMap(rs));</pre></td></tr>
+<tr> <td class="numLineCover"> 195</td> <td class="nbHitsCovered"> 27</td> <td class="src"><pre class="src"> rts.put(rt, Collections.unmodifiableMap(rs));</pre></td></tr>
<tr> <td class="numLine"> 196</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 197</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
-<tr> <td class="numLineCover"> 198</td> <td class="nbHitsCovered"> 12</td> <td class="src"><pre class="src"> RULES.put(s, Collections.unmodifiableMap(rts));</pre></td></tr>
+<tr> <td class="numLineCover"> 198</td> <td class="nbHitsCovered"> 9</td> <td class="src"><pre class="src"> RULES.put(s, Collections.unmodifiableMap(rts));</pre></td></tr>
<tr> <td class="numLine"> 199</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 200</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> }</pre></td></tr>
+<tr> <td class="numLineCover"> 200</td> <td class="nbHitsCovered"> 3</td> <td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 201</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 202</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> contains(<span class="keyword">final</span> CharSequence chars, <span class="keyword">final</span> <span class="keyword">char</span> input) {</pre></td></tr>
-<tr> <td class="numLineCover"> 203</td> <td class="nbHitsCovered"><a title="Line 203: Conditional coverage 100% (2/2)."> 1248920</a></td> <td class="src"><pre class="src"> <a title="Line 203: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (<span class="keyword">int</span> i = 0; i < chars.length(); i++) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 204</td> <td class="nbHitsCovered"><a title="Line 204: Conditional coverage 100% (2/2)."> 1083208</a></td> <td class="src"><pre class="src"> <a title="Line 204: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (chars.charAt(i) == input) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 205</td> <td class="nbHitsCovered"> 41812</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">true</span>;</pre></td></tr>
+<tr> <td class="numLineCover"> 203</td> <td class="nbHitsCovered"><a title="Line 203: Conditional coverage 100% (2/2)."> 936690</a></td> <td class="src"><pre class="src"> <a title="Line 203: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (<span class="keyword">int</span> i = 0; i < chars.length(); i++) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 204</td> <td class="nbHitsCovered"><a title="Line 204: Conditional coverage 100% (2/2)."> 812406</a></td> <td class="src"><pre class="src"> <a title="Line 204: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (chars.charAt(i) == input) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 205</td> <td class="nbHitsCovered"> 31359</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">true</span>;</pre></td></tr>
<tr> <td class="numLine"> 206</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 207</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 208</td> <td class="nbHitsCovered"> 165712</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">false</span>;</pre></td></tr>
+<tr> <td class="numLineCover"> 208</td> <td class="nbHitsCovered"> 124284</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">false</span>;</pre></td></tr>
<tr> <td class="numLine"> 209</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 210</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 211</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">static</span> String createResourceName(<span class="keyword">final</span> NameType nameType, <span class="keyword">final</span> RuleType rt, <span class="keyword">final</span> String lang) {</pre></td></tr>
-<tr> <td class="numLineCover"> 212</td> <td class="nbHitsCovered"> 912</td> <td class="src"><pre class="src"> <span class="keyword">return</span> String.format(<span class="string">"org/apache/commons/codec/language/bm/%s_%s_%s.txt"</span>,</pre></td></tr>
+<tr> <td class="numLineCover"> 212</td> <td class="nbHitsCovered"> 684</td> <td class="src"><pre class="src"> <span class="keyword">return</span> String.format(<span class="string">"org/apache/commons/codec/language/bm/%s_%s_%s.txt"</span>,</pre></td></tr>
<tr> <td class="numLine"> 213</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> nameType.getName(), rt.getName(), lang);</pre></td></tr>
<tr> <td class="numLine"> 214</td> <td class="nbHits"> </td>
@@ -415,52 +415,52 @@
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 216</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">static</span> Scanner createScanner(<span class="keyword">final</span> NameType nameType, <span class="keyword">final</span> RuleType rt, <span class="keyword">final</span> String lang) {</pre></td></tr>
-<tr> <td class="numLineCover"> 217</td> <td class="nbHitsCovered"> 456</td> <td class="src"><pre class="src"> <span class="keyword">final</span> String resName = createResourceName(nameType, rt, lang);</pre></td></tr>
-<tr> <td class="numLineCover"> 218</td> <td class="nbHitsCovered"> 456</td> <td class="src"><pre class="src"> <span class="keyword">final</span> InputStream rulesIS = Languages.<span class="keyword">class</span>.getClassLoader().getResourceAsStream(resName);</pre></td></tr>
+<tr> <td class="numLineCover"> 217</td> <td class="nbHitsCovered"> 342</td> <td class="src"><pre class="src"> <span class="keyword">final</span> String resName = createResourceName(nameType, rt, lang);</pre></td></tr>
+<tr> <td class="numLineCover"> 218</td> <td class="nbHitsCovered"> 342</td> <td class="src"><pre class="src"> <span class="keyword">final</span> InputStream rulesIS = Languages.<span class="keyword">class</span>.getClassLoader().getResourceAsStream(resName);</pre></td></tr>
<tr> <td class="numLine"> 219</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
-<tr> <td class="numLineCover"> 220</td> <td class="nbHitsUncovered"><a title="Line 220: Conditional coverage 50% (1/2)."> 456</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 220: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (rulesIS == <span class="keyword">null</span>) {</a></span></pre></td></tr>
+<tr> <td class="numLineCover"> 220</td> <td class="nbHitsUncovered"><a title="Line 220: Conditional coverage 50% (1/2)."> 342</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 220: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (rulesIS == <span class="keyword">null</span>) {</a></span></pre></td></tr>
<tr> <td class="numLineCover"> 221</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">"Unable to load resource: "</span> + resName);</span></pre></td></tr>
<tr> <td class="numLine"> 222</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 223</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
-<tr> <td class="numLineCover"> 224</td> <td class="nbHitsCovered"> 456</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">new</span> Scanner(rulesIS, ResourceConstants.ENCODING);</pre></td></tr>
+<tr> <td class="numLineCover"> 224</td> <td class="nbHitsCovered"> 342</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">new</span> Scanner(rulesIS, ResourceConstants.ENCODING);</pre></td></tr>
<tr> <td class="numLine"> 225</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 226</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 227</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">static</span> Scanner createScanner(<span class="keyword">final</span> String lang) {</pre></td></tr>
-<tr> <td class="numLineCover"> 228</td> <td class="nbHitsCovered"> 140</td> <td class="src"><pre class="src"> <span class="keyword">final</span> String resName = String.format(<span class="string">"org/apache/commons/codec/language/bm/%s.txt"</span>, lang);</pre></td></tr>
-<tr> <td class="numLineCover"> 229</td> <td class="nbHitsCovered"> 140</td> <td class="src"><pre class="src"> <span class="keyword">final</span> InputStream rulesIS = Languages.<span class="keyword">class</span>.getClassLoader().getResourceAsStream(resName);</pre></td></tr>
+<tr> <td class="numLineCover"> 228</td> <td class="nbHitsCovered"> 105</td> <td class="src"><pre class="src"> <span class="keyword">final</span> String resName = String.format(<span class="string">"org/apache/commons/codec/language/bm/%s.txt"</span>, lang);</pre></td></tr>
+<tr> <td class="numLineCover"> 229</td> <td class="nbHitsCovered"> 105</td> <td class="src"><pre class="src"> <span class="keyword">final</span> InputStream rulesIS = Languages.<span class="keyword">class</span>.getClassLoader().getResourceAsStream(resName);</pre></td></tr>
<tr> <td class="numLine"> 230</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
-<tr> <td class="numLineCover"> 231</td> <td class="nbHitsUncovered"><a title="Line 231: Conditional coverage 50% (1/2)."> 140</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 231: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (rulesIS == <span class="keyword">null</span>) {</a></span></pre></td></tr>
+<tr> <td class="numLineCover"> 231</td> <td class="nbHitsUncovered"><a title="Line 231: Conditional coverage 50% (1/2)."> 105</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 231: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (rulesIS == <span class="keyword">null</span>) {</a></span></pre></td></tr>
<tr> <td class="numLineCover"> 232</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">"Unable to load resource: "</span> + resName);</span></pre></td></tr>
<tr> <td class="numLine"> 233</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 234</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
-<tr> <td class="numLineCover"> 235</td> <td class="nbHitsCovered"> 140</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">new</span> Scanner(rulesIS, ResourceConstants.ENCODING);</pre></td></tr>
+<tr> <td class="numLineCover"> 235</td> <td class="nbHitsCovered"> 105</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">new</span> Scanner(rulesIS, ResourceConstants.ENCODING);</pre></td></tr>
<tr> <td class="numLine"> 236</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 237</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 238</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> endsWith(<span class="keyword">final</span> CharSequence input, <span class="keyword">final</span> CharSequence suffix) {</pre></td></tr>
-<tr> <td class="numLineCover"> 239</td> <td class="nbHitsCovered"><a title="Line 239: Conditional coverage 100% (2/2)."> 3576</a></td> <td class="src"><pre class="src"> <a title="Line 239: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (suffix.length() > input.length()) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 240</td> <td class="nbHitsCovered"> 496</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">false</span>;</pre></td></tr>
+<tr> <td class="numLineCover"> 239</td> <td class="nbHitsCovered"><a title="Line 239: Conditional coverage 100% (2/2)."> 2682</a></td> <td class="src"><pre class="src"> <a title="Line 239: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (suffix.length() > input.length()) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 240</td> <td class="nbHitsCovered"> 372</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">false</span>;</pre></td></tr>
<tr> <td class="numLine"> 241</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 242</td> <td class="nbHitsCovered"><a title="Line 242: Conditional coverage 100% (2/2)."> 3132</a></td> <td class="src"><pre class="src"> <a title="Line 242: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (<span class="keyword">int</span> i = input.length() - 1, j = suffix.length() - 1; j >= 0; i--, j--) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 243</td> <td class="nbHitsCovered"><a title="Line 243: Conditional coverage 100% (2/2)."> 3080</a></td> <td class="src"><pre class="src"> <a title="Line 243: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (input.charAt(i) != suffix.charAt(j)) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 244</td> <td class="nbHitsCovered"> 3028</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">false</span>;</pre></td></tr>
+<tr> <td class="numLineCover"> 242</td> <td class="nbHitsCovered"><a title="Line 242: Conditional coverage 100% (2/2)."> 2349</a></td> <td class="src"><pre class="src"> <a title="Line 242: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (<span class="keyword">int</span> i = input.length() - 1, j = suffix.length() - 1; j >= 0; i--, j--) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 243</td> <td class="nbHitsCovered"><a title="Line 243: Conditional coverage 100% (2/2)."> 2310</a></td> <td class="src"><pre class="src"> <a title="Line 243: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (input.charAt(i) != suffix.charAt(j)) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 244</td> <td class="nbHitsCovered"> 2271</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">false</span>;</pre></td></tr>
<tr> <td class="numLine"> 245</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 246</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 247</td> <td class="nbHitsCovered"> 52</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">true</span>;</pre></td></tr>
+<tr> <td class="numLineCover"> 247</td> <td class="nbHitsCovered"> 39</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">true</span>;</pre></td></tr>
<tr> <td class="numLine"> 248</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 249</td> <td class="nbHits"> </td>
@@ -491,7 +491,7 @@
<td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">static</span> List<Rule> getInstance(<span class="keyword">final</span> NameType nameType, <span class="keyword">final</span> RuleType rt,</pre></td></tr>
<tr> <td class="numLine"> 262</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">final</span> Languages.LanguageSet langs) {</pre></td></tr>
-<tr> <td class="numLineCover"> 263</td> <td class="nbHitsCovered"><a title="Line 263: Conditional coverage 100% (2/2)."> 537344</a></td> <td class="src"><pre class="src"> <a title="Line 263: Conditional coverage 100% (2/2)."> <span class="keyword">return</span> langs.isSingleton() ? getInstance(nameType, rt, langs.getAny()) :</a></pre></td></tr>
+<tr> <td class="numLineCover"> 263</td> <td class="nbHitsCovered"><a title="Line 263: Conditional coverage 100% (2/2)."> 403008</a></td> <td class="src"><pre class="src"> <a title="Line 263: Conditional coverage 100% (2/2)."> <span class="keyword">return</span> langs.isSingleton() ? getInstance(nameType, rt, langs.getAny()) :</a></pre></td></tr>
<tr> <td class="numLine"> 264</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> getInstance(nameType, rt, Languages.ANY);</pre></td></tr>
<tr> <td class="numLine"> 265</td> <td class="nbHits"> </td>
@@ -522,39 +522,39 @@
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine"> 278</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">static</span> List<Rule> getInstance(<span class="keyword">final</span> NameType nameType, <span class="keyword">final</span> RuleType rt, <span class="keyword">final</span> String lang) {</pre></td></tr>
-<tr> <td class="numLineCover"> 279</td> <td class="nbHitsCovered"> 806020</td> <td class="src"><pre class="src"> <span class="keyword">final</span> List<Rule> rules = RULES.get(nameType).get(rt).get(lang);</pre></td></tr>
+<tr> <td class="numLineCover"> 279</td> <td class="nbHitsCovered"> 604515</td> <td class="src"><pre class="src"> <span class="keyword">final</span> List<Rule> rules = RULES.get(nameType).get(rt).get(lang);</pre></td></tr>
<tr> <td class="numLine"> 280</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
-<tr> <td class="numLineCover"> 281</td> <td class="nbHitsCovered"><a title="Line 281: Conditional coverage 100% (2/2)."> 806020</a></td> <td class="src"><pre class="src"> <a title="Line 281: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (rules == <span class="keyword">null</span>) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 282</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> <span class="keyword">throw</span> <span class="keyword">new</span> IllegalArgumentException(String.format(<span class="string">"No rules found for %s, %s, %s."</span>,</pre></td></tr>
+<tr> <td class="numLineCover"> 281</td> <td class="nbHitsCovered"><a title="Line 281: Conditional coverage 100% (2/2)."> 604515</a></td> <td class="src"><pre class="src"> <a title="Line 281: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (rules == <span class="keyword">null</span>) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 282</td> <td class="nbHitsCovered"> 3</td> <td class="src"><pre class="src"> <span class="keyword">throw</span> <span class="keyword">new</span> IllegalArgumentException(String.format(<span class="string">"No rules found for %s, %s, %s."</span>,</pre></td></tr>
<tr> <td class="numLine"> 283</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> nameType.getName(), rt.getName(), lang));</pre></td></tr>
<tr> <td class="numLine"> 284</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 285</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
-<tr> <td class="numLineCover"> 286</td> <td class="nbHitsCovered"> 806016</td> <td class="src"><pre class="src"> <span class="keyword">return</span> rules;</pre></td></tr>
+<tr> <td class="numLineCover"> 286</td> <td class="nbHitsCovered"> 604512</td> <td class="src"><pre class="src"> <span class="keyword">return</span> rules;</pre></td></tr>
<tr> <td class="numLine"> 287</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 288</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 289</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">static</span> Phoneme parsePhoneme(<span class="keyword">final</span> String ph) {</pre></td></tr>
-<tr> <td class="numLineCover"> 290</td> <td class="nbHitsCovered"> 25552</td> <td class="src"><pre class="src"> <span class="keyword">final</span> <span class="keyword">int</span> open = ph.indexOf(<span class="string">"["</span>);</pre></td></tr>
-<tr> <td class="numLineCover"> 291</td> <td class="nbHitsCovered"><a title="Line 291: Conditional coverage 100% (2/2)."> 25552</a></td> <td class="src"><pre class="src"> <a title="Line 291: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (open >= 0) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 292</td> <td class="nbHitsUncovered"><a title="Line 292: Conditional coverage 50% (1/2)."> 2388</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 292: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (!ph.endsWith(<span class="string">"]"</span>)) {</a></span></pre></td></tr>
+<tr> <td class="numLineCover"> 290</td> <td class="nbHitsCovered"> 19164</td> <td class="src"><pre class="src"> <span class="keyword">final</span> <span class="keyword">int</span> open = ph.indexOf(<span class="string">"["</span>);</pre></td></tr>
+<tr> <td class="numLineCover"> 291</td> <td class="nbHitsCovered"><a title="Line 291: Conditional coverage 100% (2/2)."> 19164</a></td> <td class="src"><pre class="src"> <a title="Line 291: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (open >= 0) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 292</td> <td class="nbHitsUncovered"><a title="Line 292: Conditional coverage 50% (1/2)."> 1791</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 292: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (!ph.endsWith(<span class="string">"]"</span>)) {</a></span></pre></td></tr>
<tr> <td class="numLineCover"> 293</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">"Phoneme expression contains a '[' but does not end in ']'"</span>);</span></pre></td></tr>
<tr> <td class="numLine"> 294</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 295</td> <td class="nbHitsCovered"> 2388</td> <td class="src"><pre class="src"> <span class="keyword">final</span> String before = ph.substring(0, open);</pre></td></tr>
-<tr> <td class="numLineCover"> 296</td> <td class="nbHitsCovered"> 2388</td> <td class="src"><pre class="src"> <span class="keyword">final</span> String in = ph.substring(open + 1, ph.length() - 1);</pre></td></tr>
-<tr> <td class="numLineCover"> 297</td> <td class="nbHitsCovered"> 2388</td> <td class="src"><pre class="src"> <span class="keyword">final</span> Set<String> langs = <span class="keyword">new</span> HashSet<String>(Arrays.asList(in.split(<span class="string">"[+]"</span>)));</pre></td></tr>
+<tr> <td class="numLineCover"> 295</td> <td class="nbHitsCovered"> 1791</td> <td class="src"><pre class="src"> <span class="keyword">final</span> String before = ph.substring(0, open);</pre></td></tr>
+<tr> <td class="numLineCover"> 296</td> <td class="nbHitsCovered"> 1791</td> <td class="src"><pre class="src"> <span class="keyword">final</span> String in = ph.substring(open + 1, ph.length() - 1);</pre></td></tr>
+<tr> <td class="numLineCover"> 297</td> <td class="nbHitsCovered"> 1791</td> <td class="src"><pre class="src"> <span class="keyword">final</span> Set<String> langs = <span class="keyword">new</span> HashSet<String>(Arrays.asList(in.split(<span class="string">"[+]"</span>)));</pre></td></tr>
<tr> <td class="numLine"> 298</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
-<tr> <td class="numLineCover"> 299</td> <td class="nbHitsCovered"> 2388</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">new</span> Phoneme(before, Languages.LanguageSet.from(langs));</pre></td></tr>
+<tr> <td class="numLineCover"> 299</td> <td class="nbHitsCovered"> 1791</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">new</span> Phoneme(before, Languages.LanguageSet.from(langs));</pre></td></tr>
<tr> <td class="numLine"> 300</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> } <span class="keyword">else</span> {</pre></td></tr>
-<tr> <td class="numLineCover"> 301</td> <td class="nbHitsCovered"> 23164</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">new</span> Phoneme(ph, Languages.ANY_LANGUAGE);</pre></td></tr>
+<tr> <td class="numLineCover"> 301</td> <td class="nbHitsCovered"> 17373</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">new</span> Phoneme(ph, Languages.ANY_LANGUAGE);</pre></td></tr>
<tr> <td class="numLine"> 302</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 303</td> <td class="nbHits"> </td>
@@ -563,29 +563,29 @@
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 305</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">static</span> PhonemeExpr parsePhonemeExpr(<span class="keyword">final</span> String ph) {</pre></td></tr>
-<tr> <td class="numLineCover"> 306</td> <td class="nbHitsCovered"><a title="Line 306: Conditional coverage 100% (2/2)."> 18028</a></td> <td class="src"><pre class="src"> <a title="Line 306: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (ph.startsWith(<span class="string">"("</span>)) { <span class="comment">// we have a bracketed list of options</span></a></pre></td></tr>
-<tr> <td class="numLineCover"> 307</td> <td class="nbHitsUncovered"><a title="Line 307: Conditional coverage 50% (1/2)."> 5752</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 307: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (!ph.endsWith(<span class="string">")"</span>)) {</a></span></pre></td></tr>
+<tr> <td class="numLineCover"> 306</td> <td class="nbHitsCovered"><a title="Line 306: Conditional coverage 100% (2/2)."> 13521</a></td> <td class="src"><pre class="src"> <a title="Line 306: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (ph.startsWith(<span class="string">"("</span>)) { <span class="comment">// we have a bracketed list of options</span></a></pre></td></tr>
+<tr> <td class="numLineCover"> 307</td> <td class="nbHitsUncovered"><a title="Line 307: Conditional coverage 50% (1/2)."> 4314</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 307: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (!ph.endsWith(<span class="string">")"</span>)) {</a></span></pre></td></tr>
<tr> <td class="numLineCover"> 308</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">"Phoneme starts with '(' so must end with ')'"</span>);</span></pre></td></tr>
<tr> <td class="numLine"> 309</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 310</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
-<tr> <td class="numLineCover"> 311</td> <td class="nbHitsCovered"> 5752</td> <td class="src"><pre class="src"> <span class="keyword">final</span> List<Phoneme> phs = <span class="keyword">new</span> ArrayList<Phoneme>();</pre></td></tr>
-<tr> <td class="numLineCover"> 312</td> <td class="nbHitsCovered"> 5752</td> <td class="src"><pre class="src"> <span class="keyword">final</span> String body = ph.substring(1, ph.length() - 1);</pre></td></tr>
-<tr> <td class="numLineCover"> 313</td> <td class="nbHitsCovered"><a title="Line 313: Conditional coverage 100% (2/2)."> 19028</a></td> <td class="src"><pre class="src"> <a title="Line 313: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (<span class="keyword">final</span> String part : body.split(<span class="string">"[|]"</span>)) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 314</td> <td class="nbHitsCovered"> 13276</td> <td class="src"><pre class="src"> phs.add(parsePhoneme(part));</pre></td></tr>
+<tr> <td class="numLineCover"> 311</td> <td class="nbHitsCovered"> 4314</td> <td class="src"><pre class="src"> <span class="keyword">final</span> List<Phoneme> phs = <span class="keyword">new</span> ArrayList<Phoneme>();</pre></td></tr>
+<tr> <td class="numLineCover"> 312</td> <td class="nbHitsCovered"> 4314</td> <td class="src"><pre class="src"> <span class="keyword">final</span> String body = ph.substring(1, ph.length() - 1);</pre></td></tr>
+<tr> <td class="numLineCover"> 313</td> <td class="nbHitsCovered"><a title="Line 313: Conditional coverage 100% (2/2)."> 14271</a></td> <td class="src"><pre class="src"> <a title="Line 313: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (<span class="keyword">final</span> String part : body.split(<span class="string">"[|]"</span>)) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 314</td> <td class="nbHitsCovered"> 9957</td> <td class="src"><pre class="src"> phs.add(parsePhoneme(part));</pre></td></tr>
<tr> <td class="numLine"> 315</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 316</td> <td class="nbHitsCovered"><a title="Line 316: Conditional coverage 100% (4/4) [each condition: 100%, 100%]."> 5752</a></td> <td class="src"><pre class="src"> <a title="Line 316: Conditional coverage 100% (4/4) [each condition: 100%, 100%]."> <span class="keyword">if</span> (body.startsWith(<span class="string">"|"</span>) || body.endsWith(<span class="string">"|"</span>)) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 317</td> <td class="nbHitsCovered"> 192</td> <td class="src"><pre class="src"> phs.add(<span class="keyword">new</span> Phoneme(<span class="string">""</span>, Languages.ANY_LANGUAGE));</pre></td></tr>
+<tr> <td class="numLineCover"> 316</td> <td class="nbHitsCovered"><a title="Line 316: Conditional coverage 100% (4/4) [each condition: 100%, 100%]."> 4314</a></td> <td class="src"><pre class="src"> <a title="Line 316: Conditional coverage 100% (4/4) [each condition: 100%, 100%]."> <span class="keyword">if</span> (body.startsWith(<span class="string">"|"</span>) || body.endsWith(<span class="string">"|"</span>)) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 317</td> <td class="nbHitsCovered"> 144</td> <td class="src"><pre class="src"> phs.add(<span class="keyword">new</span> Phoneme(<span class="string">""</span>, Languages.ANY_LANGUAGE));</pre></td></tr>
<tr> <td class="numLine"> 318</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 319</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
-<tr> <td class="numLineCover"> 320</td> <td class="nbHitsCovered"> 5752</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">new</span> PhonemeList(phs);</pre></td></tr>
+<tr> <td class="numLineCover"> 320</td> <td class="nbHitsCovered"> 4314</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">new</span> PhonemeList(phs);</pre></td></tr>
<tr> <td class="numLine"> 321</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> } <span class="keyword">else</span> {</pre></td></tr>
-<tr> <td class="numLineCover"> 322</td> <td class="nbHitsCovered"> 12276</td> <td class="src"><pre class="src"> <span class="keyword">return</span> parsePhoneme(ph);</pre></td></tr>
+<tr> <td class="numLineCover"> 322</td> <td class="nbHitsCovered"> 9207</td> <td class="src"><pre class="src"> <span class="keyword">return</span> parsePhoneme(ph);</pre></td></tr>
<tr> <td class="numLine"> 323</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 324</td> <td class="nbHits"> </td>
@@ -594,66 +594,66 @@
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 326</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">static</span> List<Rule> parseRules(<span class="keyword">final</span> Scanner scanner, <span class="keyword">final</span> String location) {</pre></td></tr>
-<tr> <td class="numLineCover"> 327</td> <td class="nbHitsCovered"> 596</td> <td class="src"><pre class="src"> <span class="keyword">final</span> List<Rule> lines = <span class="keyword">new</span> ArrayList<Rule>();</pre></td></tr>
-<tr> <td class="numLineCover"> 328</td> <td class="nbHitsCovered"> 596</td> <td class="src"><pre class="src"> <span class="keyword">int</span> currentLine = 0;</pre></td></tr>
+<tr> <td class="numLineCover"> 327</td> <td class="nbHitsCovered"> 447</td> <td class="src"><pre class="src"> <span class="keyword">final</span> List<Rule> lines = <span class="keyword">new</span> ArrayList<Rule>();</pre></td></tr>
+<tr> <td class="numLineCover"> 328</td> <td class="nbHitsCovered"> 447</td> <td class="src"><pre class="src"> <span class="keyword">int</span> currentLine = 0;</pre></td></tr>
<tr> <td class="numLine"> 329</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
-<tr> <td class="numLineCover"> 330</td> <td class="nbHitsCovered"> 596</td> <td class="src"><pre class="src"> <span class="keyword">boolean</span> inMultilineComment = <span class="keyword">false</span>;</pre></td></tr>
-<tr> <td class="numLineCover"> 331</td> <td class="nbHitsCovered"><a title="Line 331: Conditional coverage 100% (2/2)."> 32980</a></td> <td class="src"><pre class="src"> <a title="Line 331: Conditional coverage 100% (2/2)."> <span class="keyword">while</span> (scanner.hasNextLine()) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 332</td> <td class="nbHitsCovered"> 32384</td> <td class="src"><pre class="src"> currentLine++;</pre></td></tr>
-<tr> <td class="numLineCover"> 333</td> <td class="nbHitsCovered"> 32384</td> <td class="src"><pre class="src"> <span class="keyword">final</span> String rawLine = scanner.nextLine();</pre></td></tr>
-<tr> <td class="numLineCover"> 334</td> <td class="nbHitsCovered"> 32384</td> <td class="src"><pre class="src"> String line = rawLine;</pre></td></tr>
+<tr> <td class="numLineCover"> 330</td> <td class="nbHitsCovered"> 447</td> <td class="src"><pre class="src"> <span class="keyword">boolean</span> inMultilineComment = <span class="keyword">false</span>;</pre></td></tr>
+<tr> <td class="numLineCover"> 331</td> <td class="nbHitsCovered"><a title="Line 331: Conditional coverage 100% (2/2)."> 24735</a></td> <td class="src"><pre class="src"> <a title="Line 331: Conditional coverage 100% (2/2)."> <span class="keyword">while</span> (scanner.hasNextLine()) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 332</td> <td class="nbHitsCovered"> 24288</td> <td class="src"><pre class="src"> currentLine++;</pre></td></tr>
+<tr> <td class="numLineCover"> 333</td> <td class="nbHitsCovered"> 24288</td> <td class="src"><pre class="src"> <span class="keyword">final</span> String rawLine = scanner.nextLine();</pre></td></tr>
+<tr> <td class="numLineCover"> 334</td> <td class="nbHitsCovered"> 24288</td> <td class="src"><pre class="src"> String line = rawLine;</pre></td></tr>
<tr> <td class="numLine"> 335</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
-<tr> <td class="numLineCover"> 336</td> <td class="nbHitsCovered"><a title="Line 336: Conditional coverage 100% (2/2)."> 32384</a></td> <td class="src"><pre class="src"> <a title="Line 336: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (inMultilineComment) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 337</td> <td class="nbHitsCovered"><a title="Line 337: Conditional coverage 100% (2/2)."> 8940</a></td> <td class="src"><pre class="src"> <a title="Line 337: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (line.endsWith(ResourceConstants.EXT_CMT_END)) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 338</td> <td class="nbHitsCovered"> 596</td> <td class="src"><pre class="src"> inMultilineComment = <span class="keyword">false</span>;</pre></td></tr>
+<tr> <td class="numLineCover"> 336</td> <td class="nbHitsCovered"><a title="Line 336: Conditional coverage 100% (2/2)."> 24288</a></td> <td class="src"><pre class="src"> <a title="Line 336: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (inMultilineComment) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 337</td> <td class="nbHitsCovered"><a title="Line 337: Conditional coverage 100% (2/2)."> 6705</a></td> <td class="src"><pre class="src"> <a title="Line 337: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (line.endsWith(ResourceConstants.EXT_CMT_END)) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 338</td> <td class="nbHitsCovered"> 447</td> <td class="src"><pre class="src"> inMultilineComment = <span class="keyword">false</span>;</pre></td></tr>
<tr> <td class="numLine"> 339</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 340</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> } <span class="keyword">else</span> {</pre></td></tr>
-<tr> <td class="numLineCover"> 341</td> <td class="nbHitsCovered"><a title="Line 341: Conditional coverage 100% (2/2)."> 23444</a></td> <td class="src"><pre class="src"> <a title="Line 341: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (line.startsWith(ResourceConstants.EXT_CMT_START)) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 342</td> <td class="nbHitsCovered"> 596</td> <td class="src"><pre class="src"> inMultilineComment = <span class="keyword">true</span>;</pre></td></tr>
+<tr> <td class="numLineCover"> 341</td> <td class="nbHitsCovered"><a title="Line 341: Conditional coverage 100% (2/2)."> 17583</a></td> <td class="src"><pre class="src"> <a title="Line 341: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (line.startsWith(ResourceConstants.EXT_CMT_START)) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 342</td> <td class="nbHitsCovered"> 447</td> <td class="src"><pre class="src"> inMultilineComment = <span class="keyword">true</span>;</pre></td></tr>
<tr> <td class="numLine"> 343</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> } <span class="keyword">else</span> {</pre></td></tr>
<tr> <td class="numLine"> 344</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">// discard comments</span></pre></td></tr>
-<tr> <td class="numLineCover"> 345</td> <td class="nbHitsCovered"> 22848</td> <td class="src"><pre class="src"> <span class="keyword">final</span> <span class="keyword">int</span> cmtI = line.indexOf(ResourceConstants.CMT);</pre></td></tr>
-<tr> <td class="numLineCover"> 346</td> <td class="nbHitsCovered"><a title="Line 346: Conditional coverage 100% (2/2)."> 22848</a></td> <td class="src"><pre class="src"> <a title="Line 346: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (cmtI >= 0) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 347</td> <td class="nbHitsCovered"> 3428</td> <td class="src"><pre class="src"> line = line.substring(0, cmtI);</pre></td></tr>
+<tr> <td class="numLineCover"> 345</td> <td class="nbHitsCovered"> 17136</td> <td class="src"><pre class="src"> <span class="keyword">final</span> <span class="keyword">int</span> cmtI = line.indexOf(ResourceConstants.CMT);</pre></td></tr>
+<tr> <td class="numLineCover"> 346</td> <td class="nbHitsCovered"><a title="Line 346: Conditional coverage 100% (2/2)."> 17136</a></td> <td class="src"><pre class="src"> <a title="Line 346: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (cmtI >= 0) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 347</td> <td class="nbHitsCovered"> 2571</td> <td class="src"><pre class="src"> line = line.substring(0, cmtI);</pre></td></tr>
<tr> <td class="numLine"> 348</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 349</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 350</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">// trim leading-trailing whitespace</span></pre></td></tr>
-<tr> <td class="numLineCover"> 351</td> <td class="nbHitsCovered"> 22848</td> <td class="src"><pre class="src"> line = line.trim();</pre></td></tr>
+<tr> <td class="numLineCover"> 351</td> <td class="nbHitsCovered"> 17136</td> <td class="src"><pre class="src"> line = line.trim();</pre></td></tr>
<tr> <td class="numLine"> 352</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
-<tr> <td class="numLineCover"> 353</td> <td class="nbHitsCovered"><a title="Line 353: Conditional coverage 100% (2/2)."> 22848</a></td> <td class="src"><pre class="src"> <a title="Line 353: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (line.length() == 0) {</a></pre></td></tr>
-<tr> <td class="numLineCover"> 354</td> <td class="nbHitsCovered"> 4680</td> <td class="src"><pre class="src"> <span class="keyword">continue</span>; <span class="comment">// empty lines can be safely skipped</span></pre></td></tr>
+<tr> <td class="numLineCover"> 353</td> <td class="nbHitsCovered"><a title="Line 353: Conditional coverage 100% (2/2)."> 17136</a></td> <td class="src"><pre class="src"> <a title="Line 353: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (line.length() == 0) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 354</td> <td class="nbHitsCovered"> 3510</td> <td class="src"><pre class="src"> <span class="keyword">continue</span>; <span class="comment">// empty lines can be safely skipped</span></pre></td></tr>
<tr> <td class="numLine"> 355</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 356</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
-<tr> <td class="numLineCover"> 357</td> <td class="nbHitsCovered"><a title="Line 357: Conditional coverage 100% (2/2)."> 18168</a></td> <td class="src"><pre class="src"> <a title="Line 357: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (line.startsWith(HASH_INCLUDE)) {</a></pre></td></tr>
+<tr> <td class="numLineCover"> 357</td> <td class="nbHitsCovered"><a title="Line 357: Conditional coverage 100% (2/2)."> 13626</a></td> <td class="src"><pre class="src"> <a title="Line 357: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (line.startsWith(HASH_INCLUDE)) {</a></pre></td></tr>
<tr> <td class="numLine"> 358</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">// include statement</span></pre></td></tr>
-<tr> <td class="numLineCover"> 359</td> <td class="nbHitsCovered"> 140</td> <td class="src"><pre class="src"> <span class="keyword">final</span> String incl = line.substring(HASH_INCLUDE.length()).trim();</pre></td></tr>
-<tr> <td class="numLineCover"> 360</td> <td class="nbHitsUncovered"><a title="Line 360: Conditional coverage 50% (1/2)."> 140</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 360: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (incl.contains(<span class="string">" "</span>)) {</a></span></pre></td></tr>
+<tr> <td class="numLineCover"> 359</td> <td class="nbHitsCovered"> 105</td> <td class="src"><pre class="src"> <span class="keyword">final</span> String incl = line.substring(HASH_INCLUDE.length()).trim();</pre></td></tr>
+<tr> <td class="numLineCover"> 360</td> <td class="nbHitsUncovered"><a title="Line 360: Conditional coverage 50% (1/2)."> 105</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 360: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (incl.contains(<span class="string">" "</span>)) {</a></span></pre></td></tr>
<tr> <td class="numLineCover"> 361</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">"Malformed import statement '"</span> + rawLine + <span class="string">"' in "</span> +</span></pre></td></tr>
<tr> <td class="numLine"> 362</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> location);</pre></td></tr>
<tr> <td class="numLine"> 363</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> } <span class="keyword">else</span> {</pre></td></tr>
-<tr> <td class="numLineCover"> 364</td> <td class="nbHitsCovered"> 140</td> <td class="src"><pre class="src"> lines.addAll(parseRules(createScanner(incl), location + <span class="string">"->"</span> + incl));</pre></td></tr>
+<tr> <td class="numLineCover"> 364</td> <td class="nbHitsCovered"> 105</td> <td class="src"><pre class="src"> lines.addAll(parseRules(createScanner(incl), location + <span class="string">"->"</span> + incl));</pre></td></tr>
<tr> <td class="numLine"> 365</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
-<tr> <td class="numLineCover"> 366</td> <td class="nbHitsCovered"> 140</td> <td class="src"><pre class="src"> } <span class="keyword">else</span> {</pre></td></tr>
+<tr> <td class="numLineCover"> 366</td> <td class="nbHitsCovered"> 105</td> <td class="src"><pre class="src"> } <span class="keyword">else</span> {</pre></td></tr>
<tr> <td class="numLine"> 367</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">// rule</span></pre></td></tr>
-<tr> <td class="numLineCover"> 368</td> <td class="nbHitsCovered"> 18028</td> <td class="src"><pre class="src"> <span class="keyword">final</span> String[] parts = line.split(<span class="string">"\\s+"</span>);</pre></td></tr>
-<tr> <td class="numLineCover"> 369</td> <td class="nbHitsUncovered"><a title="Line 369: Conditional coverage 50% (1/2)."> 18028</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 369: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (parts.length != 4) {</a></span></pre></td></tr>
+<tr> <td class="numLineCover"> 368</td> <td class="nbHitsCovered"> 13521</td> <td class="src"><pre class="src"> <span class="keyword">final</span> String[] parts = line.split(<span class="string">"\\s+"</span>);</pre></td></tr>
+<tr> <td class="numLineCover"> 369</td> <td class="nbHitsUncovered"><a title="Line 369: Conditional coverage 50% (1/2)."> 13521</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 369: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (parts.length != 4) {</a></span></pre></td></tr>
<tr> <td class="numLineCover"> 370</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">"Malformed rule statement split into "</span> + parts.length +</span></pre></td></tr>
<tr> <td class="numLine"> 371</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="string">" parts: "</span> + rawLine + <span class="string">" in "</span> + location);</pre></td></tr>
@@ -661,14 +661,14 @@
<td class="src"><pre class="src"> } <span class="keyword">else</span> {</pre></td></tr>
<tr> <td class="numLine"> 373</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">try</span> {</pre></td></tr>
-<tr> <td class="numLineCover"> 374</td> <td class="nbHitsCovered"> 18028</td> <td class="src"><pre class="src"> <span class="keyword">final</span> String pat = stripQuotes(parts[0]);</pre></td></tr>
-<tr> <td class="numLineCover"> 375</td> <td class="nbHitsCovered"> 18028</td> <td class="src"><pre class="src"> <span class="keyword">final</span> String lCon = stripQuotes(parts[1]);</pre></td></tr>
-<tr> <td class="numLineCover"> 376</td> <td class="nbHitsCovered"> 18028</td> <td class="src"><pre class="src"> <span class="keyword">final</span> String rCon = stripQuotes(parts[2]);</pre></td></tr>
-<tr> <td class="numLineCover"> 377</td> <td class="nbHitsCovered"> 18028</td> <td class="src"><pre class="src"> <span class="keyword">final</span> PhonemeExpr ph = parsePhonemeExpr(stripQuotes(parts[3]));</pre></td></tr>
-<tr> <td class="numLineCover"> 378</td> <td class="nbHitsCovered"> 18028</td> <td class="src"><pre class="src"> <span class="keyword">final</span> <span class="keyword">int</span> cLine = currentLine;</pre></td></tr>
[... 372 lines stripped ...]