summaryrefslogtreecommitdiff
path: root/docs/jacoco-ut/bjc.everge
diff options
context:
space:
mode:
authorbculkin2442 <bjculkin@mix.wvu.edu>2019-06-25 20:16:13 -0400
committerbculkin2442 <bjculkin@mix.wvu.edu>2019-06-25 20:16:13 -0400
commite30d3b21a84142963e5f217125d6930589910343 (patch)
tree7a9da23758348b8280662ba005b256b4dd989de8 /docs/jacoco-ut/bjc.everge
parent65cdd46dce13ca35d73bdf3ebf75789df5581ac9 (diff)
Update site
Diffstat (limited to 'docs/jacoco-ut/bjc.everge')
-rw-r--r--docs/jacoco-ut/bjc.everge/ControlledString$Control.html1
-rw-r--r--docs/jacoco-ut/bjc.everge/ControlledString.html1
-rw-r--r--docs/jacoco-ut/bjc.everge/ControlledString.java.html178
-rw-r--r--docs/jacoco-ut/bjc.everge/Everge$InputStatus.html1
-rw-r--r--docs/jacoco-ut/bjc.everge/Everge.html1
-rw-r--r--docs/jacoco-ut/bjc.everge/Everge.java.html436
-rw-r--r--docs/jacoco-ut/bjc.everge/IntHolder.html1
-rw-r--r--docs/jacoco-ut/bjc.everge/IntHolder.java.html67
-rw-r--r--docs/jacoco-ut/bjc.everge/ReplError.html1
-rw-r--r--docs/jacoco-ut/bjc.everge/ReplError.java.html87
-rw-r--r--docs/jacoco-ut/bjc.everge/ReplOpts.html1
-rw-r--r--docs/jacoco-ut/bjc.everge/ReplOpts.java.html71
-rw-r--r--docs/jacoco-ut/bjc.everge/ReplPair.html1
-rw-r--r--docs/jacoco-ut/bjc.everge/ReplPair.java.html815
-rw-r--r--docs/jacoco-ut/bjc.everge/ReplParseException.html1
-rw-r--r--docs/jacoco-ut/bjc.everge/ReplParseException.java.html59
-rw-r--r--docs/jacoco-ut/bjc.everge/ReplSet.html1
-rw-r--r--docs/jacoco-ut/bjc.everge/ReplSet.java.html97
-rw-r--r--docs/jacoco-ut/bjc.everge/StageStatus.html1
-rw-r--r--docs/jacoco-ut/bjc.everge/StageStatus.java.html22
-rw-r--r--docs/jacoco-ut/bjc.everge/StringUtils.html1
-rw-r--r--docs/jacoco-ut/bjc.everge/StringUtils.java.html194
-rw-r--r--docs/jacoco-ut/bjc.everge/index.html1
-rw-r--r--docs/jacoco-ut/bjc.everge/index.source.html1
24 files changed, 2040 insertions, 0 deletions
diff --git a/docs/jacoco-ut/bjc.everge/ControlledString$Control.html b/docs/jacoco-ut/bjc.everge/ControlledString$Control.html
new file mode 100644
index 0000000..e93afa5
--- /dev/null
+++ b/docs/jacoco-ut/bjc.everge/ControlledString$Control.html
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>ControlledString.Control</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">everge</a> &gt; <a href="index.html" class="el_package">bjc.everge</a> &gt; <span class="el_class">ControlledString.Control</span></div><h1>ControlledString.Control</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">18 of 18</td><td class="ctr2">0%</td><td class="bar">0 of 0</td><td class="ctr2">n/a</td><td class="ctr1">3</td><td class="ctr2">3</td><td class="ctr1">9</td><td class="ctr2">9</td><td class="ctr1">3</td><td class="ctr2">3</td></tr></tfoot><tbody><tr><td id="a2"><a href="ControlledString.java.html#L50" class="el_method">ControlledString.Control(String, String[])</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="9" alt="9"/></td><td class="ctr2" id="c0">0%</td><td class="bar" id="d0"/><td class="ctr2" id="e0">n/a</td><td class="ctr1" id="f0">1</td><td class="ctr2" id="g0">1</td><td class="ctr1" id="h0">4</td><td class="ctr2" id="i0">4</td><td class="ctr1" id="j0">1</td><td class="ctr2" id="k0">1</td></tr><tr><td id="a1"><a href="ControlledString.java.html#L38" class="el_method">ControlledString.Control(String)</a></td><td class="bar" id="b1"><img src="../jacoco-resources/redbar.gif" width="80" height="10" title="6" alt="6"/></td><td class="ctr2" id="c1">0%</td><td class="bar" id="d1"/><td class="ctr2" id="e1">n/a</td><td class="ctr1" id="f1">1</td><td class="ctr2" id="g1">1</td><td class="ctr1" id="h1">3</td><td class="ctr2" id="i1">3</td><td class="ctr1" id="j1">1</td><td class="ctr2" id="k1">1</td></tr><tr><td id="a0"><a href="ControlledString.java.html#L28" class="el_method">ControlledString.Control()</a></td><td class="bar" id="b2"><img src="../jacoco-resources/redbar.gif" width="40" height="10" title="3" alt="3"/></td><td class="ctr2" id="c2">0%</td><td class="bar" id="d2"/><td class="ctr2" id="e2">n/a</td><td class="ctr1" id="f2">1</td><td class="ctr2" id="g2">1</td><td class="ctr1" id="h2">2</td><td class="ctr2" id="i2">2</td><td class="ctr1" id="j2">1</td><td class="ctr2" id="k2">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.2.201808211720</span></div></body></html> \ No newline at end of file
diff --git a/docs/jacoco-ut/bjc.everge/ControlledString.html b/docs/jacoco-ut/bjc.everge/ControlledString.html
new file mode 100644
index 0000000..70da0b2
--- /dev/null
+++ b/docs/jacoco-ut/bjc.everge/ControlledString.html
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>ControlledString</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">everge</a> &gt; <a href="index.html" class="el_package">bjc.everge</a> &gt; <span class="el_class">ControlledString</span></div><h1>ControlledString</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">159 of 159</td><td class="ctr2">0%</td><td class="bar">14 of 14</td><td class="ctr2">0%</td><td class="ctr1">12</td><td class="ctr2">12</td><td class="ctr1">35</td><td class="ctr2">35</td><td class="ctr1">5</td><td class="ctr2">5</td></tr></tfoot><tbody><tr><td id="a4"><a href="ControlledString.java.html#L133" class="el_method">parse(String, String, String, String, String)</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="126" alt="126"/></td><td class="ctr2" id="c0">0%</td><td class="bar" id="d0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="12" alt="12"/></td><td class="ctr2" id="e0">0%</td><td class="ctr1" id="f0">7</td><td class="ctr2" id="g0">7</td><td class="ctr1" id="h0">23</td><td class="ctr2" id="i0">23</td><td class="ctr1" id="j0">1</td><td class="ctr2" id="k0">1</td></tr><tr><td id="a1"><a href="ControlledString.java.html#L79" class="el_method">ControlledString(String)</a></td><td class="bar" id="b1"><img src="../jacoco-resources/redbar.gif" width="9" height="10" title="10" alt="10"/></td><td class="ctr2" id="c1">0%</td><td class="bar" id="d2"/><td class="ctr2" id="e2">n/a</td><td class="ctr1" id="f2">1</td><td class="ctr2" id="g2">1</td><td class="ctr1" id="h1">4</td><td class="ctr2" id="i1">4</td><td class="ctr1" id="j1">1</td><td class="ctr2" id="k1">1</td></tr><tr><td id="a2"><a href="ControlledString.java.html#L93" class="el_method">ControlledString(String, ControlledString.Control[])</a></td><td class="bar" id="b2"><img src="../jacoco-resources/redbar.gif" width="7" height="10" title="8" alt="8"/></td><td class="ctr2" id="c2">0%</td><td class="bar" id="d3"/><td class="ctr2" id="e3">n/a</td><td class="ctr1" id="f3">1</td><td class="ctr2" id="g3">1</td><td class="ctr1" id="h2">4</td><td class="ctr2" id="i2">4</td><td class="ctr1" id="j2">1</td><td class="ctr2" id="k2">1</td></tr><tr><td id="a3"><a href="ControlledString.java.html#L105" class="el_method">hasControls()</a></td><td class="bar" id="b3"><img src="../jacoco-resources/redbar.gif" width="7" height="10" title="8" alt="8"/></td><td class="ctr2" id="c3">0%</td><td class="bar" id="d1"><img src="../jacoco-resources/redbar.gif" width="20" height="10" title="2" alt="2"/></td><td class="ctr2" id="e1">0%</td><td class="ctr1" id="f1">2</td><td class="ctr2" id="g1">2</td><td class="ctr1" id="h4">1</td><td class="ctr2" id="i4">1</td><td class="ctr1" id="j3">1</td><td class="ctr2" id="k3">1</td></tr><tr><td id="a0"><a href="ControlledString.java.html#L69" class="el_method">ControlledString()</a></td><td class="bar" id="b4"><img src="../jacoco-resources/redbar.gif" width="6" height="10" title="7" alt="7"/></td><td class="ctr2" id="c4">0%</td><td class="bar" id="d4"/><td class="ctr2" id="e4">n/a</td><td class="ctr1" id="f4">1</td><td class="ctr2" id="g4">1</td><td class="ctr1" id="h3">3</td><td class="ctr2" id="i3">3</td><td class="ctr1" id="j4">1</td><td class="ctr2" id="k4">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.2.201808211720</span></div></body></html> \ No newline at end of file
diff --git a/docs/jacoco-ut/bjc.everge/ControlledString.java.html b/docs/jacoco-ut/bjc.everge/ControlledString.java.html
new file mode 100644
index 0000000..2f928e8
--- /dev/null
+++ b/docs/jacoco-ut/bjc.everge/ControlledString.java.html
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>ControlledString.java</title><link rel="stylesheet" href="../jacoco-resources/prettify.css" type="text/css"/><script type="text/javascript" src="../jacoco-resources/prettify.js"></script></head><body onload="window['PR_TAB_WIDTH']=4;prettyPrint()"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">everge</a> &gt; <a href="index.source.html" class="el_package">bjc.everge</a> &gt; <span class="el_source">ControlledString.java</span></div><h1>ControlledString.java</h1><pre class="source lang-java linenums">package bjc.everge;
+
+/**
+ * Represents a string with a set of control flags attached to it.
+ *
+ * @author Ben Culkin
+ */
+public class ControlledString {
+ /**
+ * Represents a single control (a key-values pair)
+ *
+ * @author Ben Culkin
+ */
+ public static class Control {
+ /**
+ * The name of the control.
+ */
+ public String name;
+
+ /**
+ * The arguments to the control.
+ */
+ public String[] args;
+
+ /**
+ * Create a new blank control.
+ */
+<span class="nc" id="L28"> public Control() {</span>
+
+<span class="nc" id="L30"> }</span>
+
+ /**
+ * Create a new argless control.
+ *
+ * @param nam
+ * The name of the control.
+ */
+<span class="nc" id="L38"> public Control(String nam) {</span>
+<span class="nc" id="L39"> name = nam;</span>
+<span class="nc" id="L40"> }</span>
+
+ /**
+ * Create a new control.
+ *
+ * @param nam
+ * The name of the control.
+ * @param ars
+ * The arguments of the control.
+ */
+<span class="nc" id="L50"> public Control(String nam, String... ars) {</span>
+<span class="nc" id="L51"> name = nam;</span>
+<span class="nc" id="L52"> args = ars;</span>
+<span class="nc" id="L53"> }</span>
+ }
+
+ /**
+ * The string the controls apply to.
+ */
+ public String strang;
+
+ /**
+ * The controls that apply to the string.
+ */
+ public Control[] controls;
+
+ /**
+ * Create a new blank controlled string.
+ */
+<span class="nc" id="L69"> public ControlledString() {</span>
+<span class="nc" id="L70"> controls = new Control[0];</span>
+<span class="nc" id="L71"> }</span>
+
+ /**
+ * Create a new controlled string without any controls.
+ *
+ * @param strung
+ * The string to use.
+ */
+<span class="nc" id="L79"> public ControlledString(String strung) {</span>
+<span class="nc" id="L80"> strang = strung;</span>
+
+<span class="nc" id="L82"> controls = new Control[0];</span>
+<span class="nc" id="L83"> }</span>
+
+ /**
+ * Create a new controlled string.
+ *
+ * @param strung
+ * The string to use.
+ * @param controls
+ * The controls that apply to the string.
+ */
+<span class="nc" id="L93"> public ControlledString(String strung, Control... controls) {</span>
+<span class="nc" id="L94"> strang = strung;</span>
+
+<span class="nc" id="L96"> controls = controls;</span>
+<span class="nc" id="L97"> }</span>
+
+ /**
+ * Check if the string has controls.
+ *
+ * @return Whether or not the string has controls.
+ */
+ public boolean hasControls() {
+<span class="nc bnc" id="L105" title="All 2 branches missed."> return controls.length &gt; 0;</span>
+ }
+
+ /**
+ * Parse a controlled string from a regular string.
+ *
+ * The controls must be parsed from the beginning of the string, and are indicated by occurances
+ * of contInd that bracket them from the string. The individual controls are delimited by
+ * instances of contSep, with arguments to them being separated by occurances of contArg.
+ *
+ * Each of those separators (which must be regular strings, not regexes or anything) may be
+ * escaped by preceeding them with a copy of contEsc.
+ *
+ * @param lne
+ * The string to parse frmo.
+ * @param contInd
+ * The indicator for whether or not there are controls.
+ * @param contSep
+ * The separator of individual controls.
+ * @param contArg
+ * The separator of control arguments.
+ * @param contEsc
+ * The escape string for each of the separators/indicators.
+ *
+ * @return A parsed control string.
+ */
+ public static ControlledString parse(String lne, String contInd, String contSep,
+ String contArg, String contEsc) {
+<span class="nc bnc" id="L133" title="All 2 branches missed."> if (!lne.startsWith(contInd)) {</span>
+<span class="nc" id="L134"> return new ControlledString(lne);</span>
+ }
+
+<span class="nc" id="L137"> String tmp = lne.substring(2);</span>
+
+<span class="nc" id="L139"> String[] bits = StringUtils.escapeSplit(contEsc, contInd, lne);</span>
+
+<span class="nc bnc" id="L141" title="All 2 branches missed."> if (bits.length &lt; 2) {</span>
+<span class="nc" id="L142"> String msg = &quot;Did not find control terminator (%s) where it should be&quot;;</span>
+<span class="nc" id="L143"> msg = String.format(msg, contInd);</span>
+
+<span class="nc" id="L145"> throw new IllegalArgumentException(msg);</span>
+ }
+
+<span class="nc" id="L148"> ControlledString cs = new ControlledString(bits[0]);</span>
+
+<span class="nc" id="L150"> bits = StringUtils.escapeSplit(contEsc, contSep, bits[1]);</span>
+
+<span class="nc" id="L152"> cs.controls = new Control[bits.length];</span>
+
+<span class="nc bnc" id="L154" title="All 2 branches missed."> for (int i = 0; i &lt; bits.length; i++) {</span>
+<span class="nc" id="L155"> String bit = bits[i];</span>
+
+<span class="nc" id="L157"> String[] bots = StringUtils.escapeSplit(contEsc, contArg, bit);</span>
+
+<span class="nc" id="L159"> Control cont = new Control(bots[0]);</span>
+
+<span class="nc bnc" id="L161" title="All 2 branches missed."> if (cont.name.length() &gt; 1) {</span>
+<span class="nc" id="L162"> cont.name = cont.name.toUpperCase();</span>
+ }
+
+<span class="nc bnc" id="L165" title="All 2 branches missed."> if (bots.length &gt; 1) {</span>
+<span class="nc" id="L166"> cont.args = new String[bots.length - 1];</span>
+<span class="nc bnc" id="L167" title="All 2 branches missed."> for (int j = 1; j &lt; bots.length; j++) {</span>
+<span class="nc" id="L168"> cont.args[j - 1] = bots[j];</span>
+ }
+ }
+
+<span class="nc" id="L172"> cs.controls[i] = cont;</span>
+ }
+
+<span class="nc" id="L175"> return cs;</span>
+ }
+}
+</pre><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.2.201808211720</span></div></body></html> \ No newline at end of file
diff --git a/docs/jacoco-ut/bjc.everge/Everge$InputStatus.html b/docs/jacoco-ut/bjc.everge/Everge$InputStatus.html
new file mode 100644
index 0000000..3595e45
--- /dev/null
+++ b/docs/jacoco-ut/bjc.everge/Everge$InputStatus.html
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>Everge.InputStatus</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">everge</a> &gt; <a href="index.html" class="el_package">bjc.everge</a> &gt; <span class="el_class">Everge.InputStatus</span></div><h1>Everge.InputStatus</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">0 of 34</td><td class="ctr2">100%</td><td class="bar">0 of 0</td><td class="ctr2">n/a</td><td class="ctr1">0</td><td class="ctr2">1</td><td class="ctr1">0</td><td class="ctr2">4</td><td class="ctr1">0</td><td class="ctr2">1</td></tr></tfoot><tbody><tr><td id="a0"><a href="Everge.java.html#L37" class="el_method">static {...}</a></td><td class="bar" id="b0"><img src="../jacoco-resources/greenbar.gif" width="120" height="10" title="34" alt="34"/></td><td class="ctr2" id="c0">100%</td><td class="bar" id="d0"/><td class="ctr2" id="e0">n/a</td><td class="ctr1" id="f0">0</td><td class="ctr2" id="g0">1</td><td class="ctr1" id="h0">0</td><td class="ctr2" id="i0">4</td><td class="ctr1" id="j0">0</td><td class="ctr2" id="k0">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.2.201808211720</span></div></body></html> \ No newline at end of file
diff --git a/docs/jacoco-ut/bjc.everge/Everge.html b/docs/jacoco-ut/bjc.everge/Everge.html
new file mode 100644
index 0000000..d9253fe
--- /dev/null
+++ b/docs/jacoco-ut/bjc.everge/Everge.html
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>Everge</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">everge</a> &gt; <a href="index.html" class="el_package">bjc.everge</a> &gt; <span class="el_class">Everge</span></div><h1>Everge</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">534 of 853</td><td class="ctr2">37%</td><td class="bar">54 of 83</td><td class="ctr2">34%</td><td class="ctr1">41</td><td class="ctr2">55</td><td class="ctr1">124</td><td class="ctr2">199</td><td class="ctr1">2</td><td class="ctr2">8</td></tr></tfoot><tbody><tr><td id="a3"><a href="Everge.java.html#L125" class="el_method">processArgs(List, String[])</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="90" height="10" title="342" alt="342"/><img src="../jacoco-resources/greenbar.gif" width="29" height="10" title="112" alt="112"/></td><td class="ctr2" id="c4">24%</td><td class="bar" id="d0"><img src="../jacoco-resources/redbar.gif" width="88" height="10" title="33" alt="33"/><img src="../jacoco-resources/greenbar.gif" width="32" height="10" title="12" alt="12"/></td><td class="ctr2" id="e2">26%</td><td class="ctr1" id="f0">25</td><td class="ctr2" id="g0">29</td><td class="ctr1" id="h0">88</td><td class="ctr2" id="i0">116</td><td class="ctr1" id="j2">0</td><td class="ctr2" id="k0">1</td></tr><tr><td id="a5"><a href="Everge.java.html#L336" class="el_method">processInputFile(List, String)</a></td><td class="bar" id="b1"><img src="../jacoco-resources/redbar.gif" width="35" height="10" title="133" alt="133"/><img src="../jacoco-resources/greenbar.gif" width="10" height="10" title="40" alt="40"/></td><td class="ctr2" id="c5">23%</td><td class="bar" id="d1"><img src="../jacoco-resources/redbar.gif" width="29" height="10" title="11" alt="11"/><img src="../jacoco-resources/greenbar.gif" width="8" height="10" title="3" alt="3"/></td><td class="ctr2" id="e4">21%</td><td class="ctr1" id="f1">7</td><td class="ctr2" id="g1">8</td><td class="ctr1" id="h1">22</td><td class="ctr2" id="i1">33</td><td class="ctr1" id="j3">0</td><td class="ctr2" id="k1">1</td></tr><tr><td id="a4"><a href="Everge.java.html#L103" class="el_method">processArgs(String[])</a></td><td class="bar" id="b2"><img src="../jacoco-resources/redbar.gif" width="7" height="10" title="28" alt="28"/></td><td class="ctr2" id="c6">0%</td><td class="bar" id="d2"><img src="../jacoco-resources/redbar.gif" width="10" height="10" title="4" alt="4"/></td><td class="ctr2" id="e5">0%</td><td class="ctr1" id="f2">3</td><td class="ctr2" id="g3">3</td><td class="ctr1" id="h2">7</td><td class="ctr2" id="i5">7</td><td class="ctr1" id="j0">1</td><td class="ctr2" id="k2">1</td></tr><tr><td id="a6"><a href="Everge.java.html#L314" class="el_method">processInputFile(String)</a></td><td class="bar" id="b3"><img src="../jacoco-resources/redbar.gif" width="3" height="10" title="15" alt="15"/><img src="../jacoco-resources/greenbar.gif" width="3" height="10" title="13" alt="13"/></td><td class="ctr2" id="c3">46%</td><td class="bar" id="d3"><img src="../jacoco-resources/redbar.gif" width="8" height="10" title="3" alt="3"/><img src="../jacoco-resources/greenbar.gif" width="2" height="10" title="1" alt="1"/></td><td class="ctr2" id="e3">25%</td><td class="ctr1" id="f3">2</td><td class="ctr2" id="g4">3</td><td class="ctr1" id="h3">3</td><td class="ctr2" id="i6">7</td><td class="ctr1" id="j4">0</td><td class="ctr2" id="k3">1</td></tr><tr><td id="a2"><a href="Everge.java.html#L90" class="el_method">main(String[])</a></td><td class="bar" id="b4"><img src="../jacoco-resources/redbar.gif" width="2" height="10" title="9" alt="9"/></td><td class="ctr2" id="c7">0%</td><td class="bar" id="d6"/><td class="ctr2" id="e6">n/a</td><td class="ctr1" id="f5">1</td><td class="ctr2" id="g6">1</td><td class="ctr1" id="h4">3</td><td class="ctr2" id="i7">3</td><td class="ctr1" id="j1">1</td><td class="ctr2" id="k4">1</td></tr><tr><td id="a1"><a href="Everge.java.html#L415" class="el_method">loadQueue(String[])</a></td><td class="bar" id="b5"><img src="../jacoco-resources/redbar.gif" width="1" height="10" title="7" alt="7"/><img src="../jacoco-resources/greenbar.gif" width="20" height="10" title="76" alt="76"/></td><td class="ctr2" id="c2">91%</td><td class="bar" id="d4"><img src="../jacoco-resources/redbar.gif" width="5" height="10" title="2" alt="2"/><img src="../jacoco-resources/greenbar.gif" width="26" height="10" title="10" alt="10"/></td><td class="ctr2" id="e0">83%</td><td class="ctr1" id="f4">2</td><td class="ctr2" id="g2">7</td><td class="ctr1" id="h5">1</td><td class="ctr2" id="i2">13</td><td class="ctr1" id="j5">0</td><td class="ctr2" id="k5">1</td></tr><tr><td id="a0"><a href="Everge.java.html#L33" class="el_method">Everge()</a></td><td class="bar" id="b6"><img src="../jacoco-resources/greenbar.gif" width="10" height="10" title="41" alt="41"/></td><td class="ctr2" id="c0">100%</td><td class="bar" id="d7"/><td class="ctr2" id="e7">n/a</td><td class="ctr1" id="f7">0</td><td class="ctr2" id="g7">1</td><td class="ctr1" id="h6">0</td><td class="ctr2" id="i3">11</td><td class="ctr1" id="j6">0</td><td class="ctr2" id="k6">1</td></tr><tr><td id="a7"><a href="Everge.java.html#L397" class="el_method">processString(String)</a></td><td class="bar" id="b7"><img src="../jacoco-resources/greenbar.gif" width="9" height="10" title="37" alt="37"/></td><td class="ctr2" id="c1">100%</td><td class="bar" id="d5"><img src="../jacoco-resources/redbar.gif" width="2" height="10" title="1" alt="1"/><img src="../jacoco-resources/greenbar.gif" width="8" height="10" title="3" alt="3"/></td><td class="ctr2" id="e1">75%</td><td class="ctr1" id="f6">1</td><td class="ctr2" id="g5">3</td><td class="ctr1" id="h7">0</td><td class="ctr2" id="i4">9</td><td class="ctr1" id="j7">0</td><td class="ctr2" id="k7">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.2.201808211720</span></div></body></html> \ No newline at end of file
diff --git a/docs/jacoco-ut/bjc.everge/Everge.java.html b/docs/jacoco-ut/bjc.everge/Everge.java.html
new file mode 100644
index 0000000..8416daa
--- /dev/null
+++ b/docs/jacoco-ut/bjc.everge/Everge.java.html
@@ -0,0 +1,436 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>Everge.java</title><link rel="stylesheet" href="../jacoco-resources/prettify.css" type="text/css"/><script type="text/javascript" src="../jacoco-resources/prettify.js"></script></head><body onload="window['PR_TAB_WIDTH']=4;prettyPrint()"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">everge</a> &gt; <a href="index.source.html" class="el_package">bjc.everge</a> &gt; <span class="el_source">Everge.java</span></div><h1>Everge.java</h1><pre class="source lang-java linenums">package bjc.everge;
+
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.PrintStream;
+
+import java.nio.charset.Charset;
+
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+
+import java.util.ArrayList;
+import java.util.Deque;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Scanner;
+
+import java.util.concurrent.locks.Lock;
+import java.util.concurrent.locks.ReadWriteLock;
+import java.util.concurrent.locks.ReentrantReadWriteLock;
+
+import java.util.regex.Pattern;
+import java.util.regex.PatternSyntaxException;
+
+/**
+ * Everge front-end application.
+ *
+ * @author Ben Culkin
+ */
+<span class="fc" id="L33">public class Everge {</span>
+ /**
+ * Details how we handle our input.
+ */
+<span class="fc" id="L37"> public static enum InputStatus {</span>
+ /**
+ * Process the input as a single string.
+ */
+<span class="fc" id="L41"> ALL,</span>
+ /**
+ * Process the input line-by-line.
+ */
+<span class="fc" id="L45"> LINE,</span>
+ /**
+ * Process the input, splitting it around occurances of a regex.
+ */
+<span class="fc" id="L49"> REGEX;</span>
+ }
+
+ // Options for doing repl-pairs
+<span class="fc" id="L53"> private ReplOpts ropts = new ReplOpts();</span>
+
+ // Loaded repl-pairs
+<span class="fc" id="L56"> private List&lt;ReplPair&gt; lrp = new ArrayList&lt;&gt;();</span>
+
+ // Input status
+<span class="fc" id="L59"> private InputStatus inputStat = InputStatus.ALL;</span>
+
+ // Are we processing CLI args? (haven't seen a -- yet)
+<span class="fc" id="L62"> private boolean doingArgs = true;</span>
+
+ // Should an NL be printed after each replace?
+<span class="fc" id="L65"> private boolean printNL = true;</span>
+
+ // Verbosity level
+<span class="fc" id="L68"> private int verbosity = 0;</span>
+
+ // The pattern to use for REGEX input mode
+ private String pattern;
+
+ // The queue of arguments to process
+<span class="fc" id="L74"> private Deque&lt;String&gt; argQue = new LinkedList&lt;&gt;();</span>
+
+ // Used to prevent inter-mixing argument alterations with input processing.
+<span class="fc" id="L77"> private ReadWriteLock argLock = new ReentrantReadWriteLock();</span>
+
+ // Input/output streams
+<span class="fc" id="L80"> public PrintStream outStream = System.out;</span>
+<span class="fc" id="L81"> public PrintStream errStream = System.err;</span>
+
+ /**
+ * Main method for front end,
+ *
+ * @param args
+ * The CLI arguments.
+ */
+ public static void main(String[] args) {
+<span class="nc" id="L90"> Everge evg = new Everge();</span>
+
+<span class="nc" id="L92"> evg.processArgs(args);</span>
+<span class="nc" id="L93"> }</span>
+
+ /**
+ * Process one or more command line arguments.
+ *
+ * @param args
+ * The arguments to process.
+ * @return Whether we processed succesfully or not.
+ */
+ public boolean processArgs(String... args) {
+<span class="nc" id="L103"> List&lt;String&gt; errs = new ArrayList&lt;&gt;();</span>
+
+<span class="nc" id="L105"> boolean stat = processArgs(errs, args);</span>
+<span class="nc bnc" id="L106" title="All 2 branches missed."> if (!stat) {</span>
+<span class="nc bnc" id="L107" title="All 2 branches missed."> for (String err : errs) {</span>
+<span class="nc" id="L108"> errStream.println(err);</span>
+<span class="nc" id="L109"> }</span>
+ }
+
+<span class="nc" id="L112"> return stat;</span>
+ }
+
+ /**
+ * Process one or more command line arguments.
+ *
+ * @param args
+ * The arguments to process.
+ * @param errs
+ * The list to stash errors in.
+ * @return Whether we processed succesfully or not.
+ */
+ public boolean processArgs(List&lt;String&gt; errs, String... args) {
+<span class="fc" id="L125"> argLock.writeLock().lock();</span>
+
+<span class="fc" id="L127"> boolean retStat = true;</span>
+
+ try {
+<span class="fc" id="L130"> loadQueue(args);</span>
+
+ // Process CLI args
+<span class="fc bfc" id="L133" title="All 2 branches covered."> while(argQue.size() &gt; 0) {</span>
+<span class="fc" id="L134"> String arg = argQue.pop();</span>
+
+<span class="pc bpc" id="L136" title="1 of 2 branches missed."> if (arg.equals(&quot;--&quot;)) {</span>
+<span class="nc" id="L137"> doingArgs = false;</span>
+<span class="nc" id="L138"> continue;</span>
+ }
+
+ // Process an argument
+<span class="pc bpc" id="L142" title="1 of 4 branches missed."> if (doingArgs &amp;&amp; arg.startsWith(&quot;-&quot;)) {</span>
+<span class="fc" id="L143"> String argName = arg;</span>
+<span class="fc" id="L144"> String argBody = &quot;&quot;;</span>
+
+ // Process arguments to arguments
+<span class="fc" id="L147"> int idx = arg.indexOf(&quot;=&quot;);</span>
+<span class="pc bpc" id="L148" title="1 of 2 branches missed."> if (idx != -1) {</span>
+<span class="nc" id="L149"> argName = arg.substring(0, idx);</span>
+<span class="nc" id="L150"> argBody = arg.substring(idx + 1);</span>
+ }
+
+<span class="pc bpc" id="L153" title="11 of 13 branches missed."> switch (argName) {</span>
+ case &quot;-n&quot;:
+ case &quot;--newline&quot;:
+<span class="nc" id="L156"> printNL = true;</span>
+<span class="nc" id="L157"> break;</span>
+ case &quot;-N&quot;:
+ case &quot;--no-newline&quot;:
+<span class="nc" id="L160"> printNL = false;</span>
+<span class="nc" id="L161"> break;</span>
+ case &quot;-v&quot;:
+ case &quot;--verbose&quot;:
+<span class="fc" id="L164"> verbosity += 1;</span>
+<span class="fc" id="L165"> break;</span>
+ case &quot;-q&quot;:
+ case &quot;--quiet&quot;:
+<span class="nc" id="L168"> verbosity -= 1;</span>
+<span class="nc" id="L169"> break;</span>
+ case &quot;--verbosity&quot;:
+<span class="nc bnc" id="L171" title="All 2 branches missed."> if (argQue.size() &lt; 1) {</span>
+<span class="nc" id="L172"> errs.add(&quot;[ERROR] No parameter to --verbosity&quot;);</span>
+<span class="nc" id="L173"> retStat = false;</span>
+<span class="nc" id="L174"> break;</span>
+ }
+<span class="nc" id="L176"> argBody = argQue.pop();</span>
+<span class="nc" id="L177"> break;</span>
+ case &quot;-V&quot;:
+ try {
+<span class="nc" id="L180"> verbosity = Integer.parseInt(argBody);</span>
+<span class="nc" id="L181"> } catch (NumberFormatException nfex) {</span>
+<span class="nc" id="L182"> String msg = String.format(&quot;[ERROR] Invalid verbosity: '%s' is not an integer&quot;,</span>
+ argBody);
+<span class="nc" id="L184"> errs.add(msg);</span>
+<span class="nc" id="L185"> retStat = false;</span>
+<span class="nc" id="L186"> }</span>
+<span class="nc" id="L187"> break;</span>
+ case &quot;--pattern&quot;:
+<span class="nc bnc" id="L189" title="All 2 branches missed."> if (argQue.size() &lt; 1) {</span>
+<span class="nc" id="L190"> errs.add(&quot;[ERROR] No parameter to --pattern&quot;);</span>
+<span class="nc" id="L191"> retStat = false;</span>
+<span class="nc" id="L192"> break;</span>
+ }
+<span class="nc" id="L194"> argBody = argQue.pop();</span>
+ case &quot;-p&quot;:
+ try {
+<span class="nc" id="L197"> pattern = argBody;</span>
+
+<span class="nc" id="L199"> Pattern.compile(argBody);</span>
+<span class="nc" id="L200"> } catch (PatternSyntaxException psex) {</span>
+<span class="nc" id="L201"> String msg = String.format(&quot;[ERROR] Pattern '%s' is invalid: %s&quot;,</span>
+<span class="nc" id="L202"> pattern, psex.getMessage());</span>
+<span class="nc" id="L203"> errs.add(msg);</span>
+<span class="nc" id="L204"> retStat = false;</span>
+<span class="nc" id="L205"> }</span>
+<span class="nc" id="L206"> break;</span>
+ case &quot;--file&quot;:
+<span class="pc bpc" id="L208" title="1 of 2 branches missed."> if (argQue.size() &lt; 1) {</span>
+<span class="nc" id="L209"> errs.add(&quot;[ERROR] No argument to --file&quot;);</span>
+<span class="nc" id="L210"> retStat = false;</span>
+<span class="nc" id="L211"> break;</span>
+ }
+<span class="fc" id="L213"> argBody = argQue.pop();</span>
+ case &quot;-f&quot;:
+<span class="fc" id="L215"> try (FileInputStream fis = new FileInputStream(argBody);</span>
+<span class="fc" id="L216"> Scanner scn = new Scanner(fis)) {</span>
+<span class="fc" id="L217"> List&lt;ReplError&gt; ferrs = new ArrayList&lt;&gt;();</span>
+
+<span class="fc" id="L219"> lrp = ReplPair.readList(lrp, scn, ferrs, ropts);</span>
+
+<span class="pc bpc" id="L221" title="1 of 2 branches missed."> if (ferrs.size() &gt; 0) {</span>
+<span class="nc" id="L222"> StringBuilder sb = new StringBuilder();</span>
+
+<span class="nc" id="L224"> String errString = &quot;an error&quot;;</span>
+<span class="nc bnc" id="L225" title="All 2 branches missed."> if (ferrs.size() &gt; 1) errString = String.format(&quot;%d errors&quot;);</span>
+
+ {
+<span class="nc" id="L228"> String msg = String.format(</span>
+ &quot;[ERROR] Encountered errors parsing data file'%s'\n&quot;,
+ argBody);
+<span class="nc" id="L231"> sb.append(msg);</span>
+ }
+
+<span class="nc bnc" id="L234" title="All 2 branches missed."> for (ReplError err : ferrs) {</span>
+<span class="nc" id="L235"> sb.append(String.format(&quot;\t%s\n&quot;, err));</span>
+<span class="nc" id="L236"> }</span>
+
+<span class="nc" id="L238"> errs.add(sb.toString());</span>
+<span class="nc" id="L239"> retStat = false;</span>
+ }
+<span class="nc" id="L241"> } catch (FileNotFoundException fnfex) {</span>
+<span class="nc" id="L242"> String msg = String.format(&quot;[ERROR] Could not open data file '%s' for input&quot;,</span>
+ argBody);
+<span class="nc" id="L244"> errs.add(msg);</span>
+<span class="nc" id="L245"> retStat = false;</span>
+<span class="nc" id="L246"> } catch (IOException ioex) {</span>
+<span class="nc" id="L247"> String msg = String.format(&quot;[ERROR] Unknown I/O error reading data file '%s': %s&quot;,</span>
+<span class="nc" id="L248"> argBody, ioex.getMessage());</span>
+<span class="nc" id="L249"> errs.add(msg);</span>
+<span class="nc" id="L250"> retStat = false;</span>
+<span class="pc" id="L251"> }</span>
+<span class="nc" id="L252"> break;</span>
+ case &quot;--arg-file&quot;:
+<span class="nc bnc" id="L254" title="All 2 branches missed."> if (argQue.size() &lt; 1) {</span>
+<span class="nc" id="L255"> errs.add(&quot;[ERROR] No argument to --arg-file&quot;);</span>
+<span class="nc" id="L256"> break;</span>
+ }
+<span class="nc" id="L258"> argBody = argQue.pop();</span>
+ case &quot;-F&quot;:
+<span class="nc" id="L260"> try (FileInputStream fis = new FileInputStream(argBody);</span>
+<span class="nc" id="L261"> Scanner scn = new Scanner(fis)) {</span>
+<span class="nc" id="L262"> List&lt;String&gt; sl = new ArrayList&lt;&gt;();</span>
+
+<span class="nc bnc" id="L264" title="All 2 branches missed."> while (scn.hasNextLine()) {</span>
+<span class="nc" id="L265"> String ln = scn.nextLine().trim();</span>
+
+<span class="nc bnc" id="L267" title="All 2 branches missed."> if (ln.equals(&quot;&quot;)) continue;</span>
+<span class="nc bnc" id="L268" title="All 2 branches missed."> if (ln.startsWith(&quot;#&quot;)) continue;</span>
+
+<span class="nc" id="L270"> sl.add(ln);</span>
+<span class="nc" id="L271"> }</span>
+
+<span class="nc" id="L273"> processArgs(sl.toArray(new String[0]));</span>
+<span class="nc" id="L274"> } catch (FileNotFoundException fnfex) {</span>
+<span class="nc" id="L275"> String msg = String.format(&quot;[ERROR] Could not open argument file '%s' for input&quot;, argBody);</span>
+<span class="nc" id="L276"> errs.add(msg);</span>
+<span class="nc" id="L277"> retStat = false;</span>
+<span class="nc" id="L278"> } catch (IOException ioex) {</span>
+<span class="nc" id="L279"> String msg = String.format(&quot;[ERROR] Unknown I/O error reading input file '%s': %s&quot;,</span>
+<span class="nc" id="L280"> argBody, ioex.getMessage());</span>
+<span class="nc" id="L281"> errs.add(msg);</span>
+<span class="nc" id="L282"> retStat = false;</span>
+<span class="nc" id="L283"> }</span>
+<span class="nc" id="L284"> break;</span>
+ default:
+ {
+<span class="nc" id="L287"> String msg = String.format(&quot;[ERROR] Unrecognised CLI argument name '%s'\n&quot;, argName);</span>
+<span class="nc" id="L288"> errs.add(msg);</span>
+<span class="nc" id="L289"> retStat = false;</span>
+ }
+ }
+<span class="fc" id="L292"> } else {</span>
+ // Strip off an escaped initial dash
+<span class="pc bpc" id="L294" title="1 of 2 branches missed."> if (arg.startsWith(&quot;\\-&quot;)) arg = arg.substring(1);</span>
+
+<span class="fc" id="L296"> processInputFile(arg);</span>
+ }
+<span class="fc" id="L298"> }</span>
+ } finally {
+<span class="fc" id="L300"> argLock.writeLock().unlock();</span>
+ }
+
+<span class="fc" id="L303"> return retStat;</span>
+ }
+
+ /**
+ * Process a input file.
+ *
+ * @param fle
+ * Input file to process.
+ * @return Whether we processed succesfully or not.
+ */
+ public boolean processInputFile(String fle) {
+<span class="fc" id="L314"> List&lt;String&gt; errs = new ArrayList&lt;&gt;();</span>
+
+<span class="fc" id="L316"> boolean stat = processInputFile(errs, fle);</span>
+<span class="pc bpc" id="L317" title="1 of 2 branches missed."> if (!stat) {</span>
+<span class="nc bnc" id="L318" title="All 2 branches missed."> for (String err : errs) {</span>
+<span class="nc" id="L319"> errStream.println(err);</span>
+<span class="nc" id="L320"> }</span>
+ }
+
+<span class="fc" id="L323"> return stat;</span>
+ }
+
+ /**
+ * Process a input file.
+ *
+ * @param fle
+ * Input file to process.
+ * @param errs
+ * List to accumulate errors in.
+ * @return Whether we processed succesfully or not.
+ */
+ public boolean processInputFile(List&lt;String&gt; errs, String fle) {
+<span class="fc" id="L336"> argLock.readLock().lock();</span>
+
+ // Read in and do replacements on a file
+ try {
+<span class="pc bpc" id="L340" title="1 of 2 branches missed."> if (verbosity &gt; 2) {</span>
+<span class="nc" id="L341"> errStream.printf(&quot;[TRACE] Reading file (%s) in mode (%s)\n&quot;, fle, inputStat);</span>
+ }
+
+<span class="pc bpc" id="L344" title="1 of 2 branches missed."> if (inputStat == InputStatus.ALL) {</span>
+<span class="fc" id="L345"> Path pth = Paths.get(fle);</span>
+
+<span class="pc bpc" id="L347" title="1 of 2 branches missed."> if (!Files.isReadable(pth)) {</span>
+<span class="nc" id="L348"> String msg = String.format(&quot;[ERROR] File '%s' is not readable\n&quot;, fle);</span>
+<span class="nc" id="L349"> errs.add(msg);</span>
+<span class="nc" id="L350"> return false;</span>
+ } else {
+<span class="fc" id="L352"> byte[] inp = Files.readAllBytes(pth);</span>
+
+<span class="fc" id="L354"> String strang = new String(inp, Charset.forName(&quot;UTF-8&quot;));</span>
+
+<span class="fc" id="L356"> processString(strang);</span>
+ }
+<span class="pc bnc" id="L358" title="All 2 branches missed."> } else if (inputStat == InputStatus.LINE) {</span>
+<span class="nc" id="L359"> try (FileInputStream fis = new FileInputStream(fle); Scanner scn = new Scanner(fis)) {</span>
+<span class="nc bnc" id="L360" title="All 2 branches missed."> while(scn.hasNextLine()) {</span>
+<span class="nc" id="L361"> processString(scn.nextLine());</span>
+ }
+<span class="nc" id="L363"> }</span>
+<span class="nc bnc" id="L364" title="All 2 branches missed."> } else if (inputStat == InputStatus.REGEX) {</span>
+<span class="nc" id="L365"> try (FileInputStream fis = new FileInputStream(fle); Scanner scn = new Scanner(fis)) {</span>
+<span class="nc" id="L366"> scn.useDelimiter(pattern);</span>
+
+<span class="nc bnc" id="L368" title="All 2 branches missed."> while(scn.hasNext()) {</span>
+<span class="nc" id="L369"> processString(scn.next());</span>
+ }
+<span class="nc" id="L371"> }</span>
+ } else {
+<span class="nc" id="L373"> String msg = String.format(&quot;[INTERNAL-ERROR] Input status '%s' is not yet implemented\n&quot;,</span>
+ inputStat);
+<span class="nc" id="L375"> errs.add(msg);</span>
+<span class="nc" id="L376"> return false;</span>
+ }
+<span class="nc" id="L378"> } catch (IOException ioex) {</span>
+<span class="nc" id="L379"> String msg = String.format(&quot;[ERROR] Unknown I/O related error for file '%s'\n\tError was %s&quot;,</span>
+<span class="nc" id="L380"> fle, ioex.getMessage());</span>
+<span class="nc" id="L381"> errs.add(msg);</span>
+<span class="nc" id="L382"> return false;</span>
+ } finally {
+<span class="fc" id="L384"> argLock.readLock().unlock();</span>
+ }
+
+<span class="fc" id="L387"> return true;</span>
+ }
+
+ /**
+ * Process an input string.
+ *
+ * @param inp
+ * The input string to process.
+ */
+ public void processString(String inp) {
+<span class="fc" id="L397"> argLock.readLock().lock();</span>
+
+ try {
+<span class="fc" id="L400"> String strang = inp;</span>
+
+<span class="fc bfc" id="L402" title="All 2 branches covered."> for (ReplPair rp : lrp) {</span>
+<span class="fc" id="L403"> strang = rp.apply(strang);</span>
+<span class="fc" id="L404"> }</span>
+
+<span class="fc" id="L406"> outStream.print(strang);</span>
+<span class="pc bpc" id="L407" title="1 of 2 branches missed."> if (printNL) outStream.println();</span>
+ } finally {
+<span class="fc" id="L409"> argLock.readLock().unlock();</span>
+ }
+<span class="fc" id="L411"> }</span>
+
+ // Load arguments into the argument queue.
+ private void loadQueue(String... args) {
+<span class="fc" id="L415"> boolean doArgs = true;</span>
+<span class="fc bfc" id="L416" title="All 2 branches covered."> for (String arg : args) {</span>
+<span class="pc bpc" id="L417" title="1 of 2 branches missed."> if (arg.equals(&quot;--&quot;)) doArgs = false;</span>
+
+ // Handle things like -nNv correctly
+<span class="pc bpc" id="L420" title="1 of 2 branches missed."> if (doArgs) {</span>
+<span class="fc bfc" id="L421" title="All 4 branches covered."> if (arg.startsWith(&quot;-&quot;) &amp;&amp; !arg.startsWith(&quot;--&quot;)) {</span>
+<span class="fc" id="L422"> char[] car = arg.substring(1).toCharArray();</span>
+<span class="fc bfc" id="L423" title="All 2 branches covered."> for (char c : car) {</span>
+<span class="fc" id="L424"> String argstr = String.format(&quot;-%c&quot;, c);</span>
+<span class="fc" id="L425"> argQue.add(argstr);</span>
+ }
+<span class="fc" id="L427"> } else {</span>
+<span class="fc" id="L428"> argQue.add(arg);</span>
+ }
+ } else {
+<span class="nc" id="L431"> argQue.add(arg);</span>
+ }
+ }
+<span class="fc" id="L434"> }</span>
+}
+</pre><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.2.201808211720</span></div></body></html> \ No newline at end of file
diff --git a/docs/jacoco-ut/bjc.everge/IntHolder.html b/docs/jacoco-ut/bjc.everge/IntHolder.html
new file mode 100644
index 0000000..7ef6a96
--- /dev/null
+++ b/docs/jacoco-ut/bjc.everge/IntHolder.html
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>IntHolder</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">everge</a> &gt; <a href="index.html" class="el_package">bjc.everge</a> &gt; <span class="el_class">IntHolder</span></div><h1>IntHolder</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">10 of 32</td><td class="ctr2">68%</td><td class="bar">0 of 0</td><td class="ctr2">n/a</td><td class="ctr1">2</td><td class="ctr2">6</td><td class="ctr1">5</td><td class="ctr2">12</td><td class="ctr1">2</td><td class="ctr2">6</td></tr></tfoot><tbody><tr><td id="a4"><a href="IntHolder.java.html#L27" class="el_method">IntHolder(int)</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="80" height="10" title="6" alt="6"/></td><td class="ctr2" id="c4">0%</td><td class="bar" id="d0"/><td class="ctr2" id="e0">n/a</td><td class="ctr1" id="f0">1</td><td class="ctr2" id="g0">1</td><td class="ctr1" id="h0">3</td><td class="ctr2" id="i0">3</td><td class="ctr1" id="j0">1</td><td class="ctr2" id="k0">1</td></tr><tr><td id="a5"><a href="IntHolder.java.html#L64" class="el_method">set(int)</a></td><td class="bar" id="b1"><img src="../jacoco-resources/redbar.gif" width="53" height="10" title="4" alt="4"/></td><td class="ctr2" id="c5">0%</td><td class="bar" id="d1"/><td class="ctr2" id="e1">n/a</td><td class="ctr1" id="f1">1</td><td class="ctr2" id="g1">1</td><td class="ctr1" id="h1">2</td><td class="ctr2" id="i2">2</td><td class="ctr1" id="j1">1</td><td class="ctr2" id="k1">1</td></tr><tr><td id="a2"><a href="IntHolder.java.html#L49" class="el_method">incr(int)</a></td><td class="bar" id="b2"><img src="../jacoco-resources/greenbar.gif" width="120" height="10" title="9" alt="9"/></td><td class="ctr2" id="c0">100%</td><td class="bar" id="d2"/><td class="ctr2" id="e2">n/a</td><td class="ctr1" id="f2">0</td><td class="ctr2" id="g2">1</td><td class="ctr1" id="h2">0</td><td class="ctr2" id="i3">2</td><td class="ctr1" id="j2">0</td><td class="ctr2" id="k2">1</td></tr><tr><td id="a3"><a href="IntHolder.java.html#L17" class="el_method">IntHolder()</a></td><td class="bar" id="b3"><img src="../jacoco-resources/greenbar.gif" width="80" height="10" title="6" alt="6"/></td><td class="ctr2" id="c1">100%</td><td class="bar" id="d3"/><td class="ctr2" id="e3">n/a</td><td class="ctr1" id="f3">0</td><td class="ctr2" id="g3">1</td><td class="ctr1" id="h3">0</td><td class="ctr2" id="i1">3</td><td class="ctr1" id="j3">0</td><td class="ctr2" id="k3">1</td></tr><tr><td id="a1"><a href="IntHolder.java.html#L37" class="el_method">incr()</a></td><td class="bar" id="b4"><img src="../jacoco-resources/greenbar.gif" width="53" height="10" title="4" alt="4"/></td><td class="ctr2" id="c2">100%</td><td class="bar" id="d4"/><td class="ctr2" id="e4">n/a</td><td class="ctr1" id="f4">0</td><td class="ctr2" id="g4">1</td><td class="ctr1" id="h4">0</td><td class="ctr2" id="i4">1</td><td class="ctr1" id="j4">0</td><td class="ctr2" id="k4">1</td></tr><tr><td id="a0"><a href="IntHolder.java.html#L60" class="el_method">get()</a></td><td class="bar" id="b5"><img src="../jacoco-resources/greenbar.gif" width="40" height="10" title="3" alt="3"/></td><td class="ctr2" id="c3">100%</td><td class="bar" id="d5"/><td class="ctr2" id="e5">n/a</td><td class="ctr1" id="f5">0</td><td class="ctr2" id="g5">1</td><td class="ctr1" id="h5">0</td><td class="ctr2" id="i5">1</td><td class="ctr1" id="j5">0</td><td class="ctr2" id="k5">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.2.201808211720</span></div></body></html> \ No newline at end of file
diff --git a/docs/jacoco-ut/bjc.everge/IntHolder.java.html b/docs/jacoco-ut/bjc.everge/IntHolder.java.html
new file mode 100644
index 0000000..746a71a
--- /dev/null
+++ b/docs/jacoco-ut/bjc.everge/IntHolder.java.html
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>IntHolder.java</title><link rel="stylesheet" href="../jacoco-resources/prettify.css" type="text/css"/><script type="text/javascript" src="../jacoco-resources/prettify.js"></script></head><body onload="window['PR_TAB_WIDTH']=4;prettyPrint()"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">everge</a> &gt; <a href="index.source.html" class="el_package">bjc.everge</a> &gt; <span class="el_source">IntHolder.java</span></div><h1>IntHolder.java</h1><pre class="source lang-java linenums">package bjc.everge;
+
+/**
+ * Utility class for ints by ref.
+ *
+ * @author Ben Culkin
+ */
+public class IntHolder {
+ /**
+ * The int value.
+ */
+ public int val;
+
+ /**
+ * Create a new int-holder set to 0.
+ */
+<span class="fc" id="L17"> public IntHolder() {</span>
+<span class="fc" id="L18"> val = 0;</span>
+<span class="fc" id="L19"> }</span>
+
+ /**
+ * Create a new int-holder set to a value.
+ *
+ * @param i
+ * The value to set the int to.
+ */
+<span class="nc" id="L27"> public IntHolder(int i) {</span>
+<span class="nc" id="L28"> val = i;</span>
+<span class="nc" id="L29"> }</span>
+
+ /**
+ * Increment the value by one, and return it.
+ *
+ * @return The value of the holder.
+ */
+ public int incr() {
+<span class="fc" id="L37"> return incr(1);</span>
+ }
+
+ /**
+ * Increment the value by an amount and return it.
+ *
+ * @param i
+ * The amount to increment by.
+ *
+ * @return The value of the holder.
+ */
+ public int incr(int i) {
+<span class="fc" id="L49"> val += 1;</span>
+
+<span class="fc" id="L51"> return val;</span>
+ }
+
+ /**
+ * Get the value.
+ *
+ * @return The value.
+ */
+ public int get() {
+<span class="fc" id="L60"> return val;</span>
+ }
+
+ public void set(int i) {
+<span class="nc" id="L64"> val = i;</span>
+<span class="nc" id="L65"> }</span>
+}
+</pre><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.2.201808211720</span></div></body></html> \ No newline at end of file
diff --git a/docs/jacoco-ut/bjc.everge/ReplError.html b/docs/jacoco-ut/bjc.everge/ReplError.html
new file mode 100644
index 0000000..7b798b3
--- /dev/null
+++ b/docs/jacoco-ut/bjc.everge/ReplError.html
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>ReplError</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">everge</a> &gt; <a href="index.html" class="el_package">bjc.everge</a> &gt; <span class="el_class">ReplError</span></div><h1>ReplError</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">72 of 132</td><td class="ctr2">45%</td><td class="bar">7 of 8</td><td class="ctr2">12%</td><td class="ctr1">6</td><td class="ctr2">9</td><td class="ctr1">7</td><td class="ctr2">18</td><td class="ctr1">2</td><td class="ctr2">5</td></tr></tfoot><tbody><tr><td id="a4"><a href="ReplError.java.html#L66" class="el_method">toString()</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="111" height="10" title="50" alt="50"/></td><td class="ctr2" id="c3">0%</td><td class="bar" id="d0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="4" alt="4"/></td><td class="ctr2" id="e1">0%</td><td class="ctr1" id="f0">3</td><td class="ctr2" id="g0">3</td><td class="ctr1" id="h0">4</td><td class="ctr2" id="i2">4</td><td class="ctr1" id="j0">1</td><td class="ctr2" id="k0">1</td></tr><tr><td id="a3"><a href="ReplError.java.html#L79" class="el_method">toPrintString(String)</a></td><td class="bar" id="b1"><img src="../jacoco-resources/redbar.gif" width="40" height="10" title="18" alt="18"/><img src="../jacoco-resources/greenbar.gif" width="80" height="10" title="36" alt="36"/></td><td class="ctr2" id="c2">66%</td><td class="bar" id="d1"><img src="../jacoco-resources/redbar.gif" width="90" height="10" title="3" alt="3"/><img src="../jacoco-resources/greenbar.gif" width="30" height="10" title="1" alt="1"/></td><td class="ctr2" id="e0">25%</td><td class="ctr1" id="f1">2</td><td class="ctr2" id="g1">3</td><td class="ctr1" id="h1">2</td><td class="ctr2" id="i1">5</td><td class="ctr1" id="j2">0</td><td class="ctr2" id="k1">1</td></tr><tr><td id="a2"><a href="ReplError.java.html#L74" class="el_method">toPrintString()</a></td><td class="bar" id="b2"><img src="../jacoco-resources/redbar.gif" width="8" height="10" title="4" alt="4"/></td><td class="ctr2" id="c4">0%</td><td class="bar" id="d2"/><td class="ctr2" id="e2">n/a</td><td class="ctr1" id="f2">1</td><td class="ctr2" id="g2">1</td><td class="ctr1" id="h2">1</td><td class="ctr2" id="i4">1</td><td class="ctr1" id="j1">1</td><td class="ctr2" id="k2">1</td></tr><tr><td id="a0"><a href="ReplError.java.html#L55" class="el_method">ReplError(int, int, String, String)</a></td><td class="bar" id="b3"><img src="../jacoco-resources/greenbar.gif" width="33" height="10" title="15" alt="15"/></td><td class="ctr2" id="c0">100%</td><td class="bar" id="d3"/><td class="ctr2" id="e3">n/a</td><td class="ctr1" id="f3">0</td><td class="ctr2" id="g3">1</td><td class="ctr1" id="h3">0</td><td class="ctr2" id="i0">6</td><td class="ctr1" id="j3">0</td><td class="ctr2" id="k3">1</td></tr><tr><td id="a1"><a href="ReplError.java.html#L40" class="el_method">ReplError(IntHolder, IntHolder, String, String)</a></td><td class="bar" id="b4"><img src="../jacoco-resources/greenbar.gif" width="20" height="10" title="9" alt="9"/></td><td class="ctr2" id="c1">100%</td><td class="bar" id="d4"/><td class="ctr2" id="e4">n/a</td><td class="ctr1" id="f4">0</td><td class="ctr2" id="g4">1</td><td class="ctr1" id="h4">0</td><td class="ctr2" id="i3">2</td><td class="ctr1" id="j4">0</td><td class="ctr2" id="k4">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.2.201808211720</span></div></body></html> \ No newline at end of file
diff --git a/docs/jacoco-ut/bjc.everge/ReplError.java.html b/docs/jacoco-ut/bjc.everge/ReplError.java.html
new file mode 100644
index 0000000..e2d44dc
--- /dev/null
+++ b/docs/jacoco-ut/bjc.everge/ReplError.java.html
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>ReplError.java</title><link rel="stylesheet" href="../jacoco-resources/prettify.css" type="text/css"/><script type="text/javascript" src="../jacoco-resources/prettify.js"></script></head><body onload="window['PR_TAB_WIDTH']=4;prettyPrint()"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">everge</a> &gt; <a href="index.source.html" class="el_package">bjc.everge</a> &gt; <span class="el_source">ReplError.java</span></div><h1>ReplError.java</h1><pre class="source lang-java linenums">package bjc.everge;
+
+/**
+ * Represents an error encountered parsing ReplPairs
+ *
+ * @author Ben Culkin
+ */
+public class ReplError {
+ /**
+ * The line the error occured on.
+ */
+ public int line;
+ /**
+ * The number of pairs we have processed so far.
+ */
+ public int numPairs;
+
+ /**
+ * The text of the line we errored on.
+ */
+ public String txt;
+ /**
+ * The message of the error.
+ */
+ public String msg;
+
+ /**
+ * Create a new ReplPair parse error.
+ *
+ * @param lne
+ * The line the error occured on.
+ * @param nPairs
+ * The number of pairs processed up to this point.
+ * @param msg
+ * The message detailing the error.
+ * @param txt
+ * The text that caused the error.
+ */
+ public ReplError(IntHolder lne, IntHolder nPairs, String msg, String txt) {
+<span class="fc" id="L40"> this(lne.get(), nPairs.get(), msg, txt);</span>
+<span class="fc" id="L41"> }</span>
+
+ /**
+ * Create a new ReplPair parse error.
+ *
+ * @param lne
+ * The line the error occured on.
+ * @param nPairs
+ * The number of pairs processed up to this point.
+ * @param msg
+ * The message detailing the error.
+ * @param txt
+ * The text that caused the error.
+ */
+<span class="fc" id="L55"> public ReplError(int lne, int nPairs, String msg, String txt) {</span>
+<span class="fc" id="L56"> line = lne;</span>
+<span class="fc" id="L57"> numPairs = nPairs;</span>
+
+<span class="fc" id="L59"> this.txt = txt;</span>
+<span class="fc" id="L60"> this.msg = msg;</span>
+<span class="fc" id="L61"> }</span>
+
+ @Override
+ public String toString() {
+ String errString;
+<span class="nc bnc" id="L66" title="All 2 branches missed."> if (txt == null) errString = &quot;No associated line&quot;;</span>
+<span class="nc bnc" id="L67" title="All 2 branches missed."> else if (txt.equals(&quot;&quot;)) errString = &quot;Text of line was empty&quot;;</span>
+<span class="nc" id="L68"> else errString = &quot;Text of line was: &quot; + txt;</span>
+
+<span class="nc" id="L70"> return String.format(&quot;line %d, pair %d:%s\n\t%s&quot;, line, numPairs, msg, errString);</span>
+ }
+
+ public String toPrintString() {
+<span class="nc" id="L74"> return toPrintString(&quot;&quot;);</span>
+ }
+
+ public String toPrintString(String hdr) {
+ String errString;
+<span class="pc bpc" id="L79" title="1 of 2 branches missed."> if (txt == null) errString = &quot;No associated line&quot;;</span>
+<span class="nc bnc" id="L80" title="All 2 branches missed."> else if (txt.equals(&quot;&quot;)) errString = &quot;Text of line was empty&quot;;</span>
+<span class="nc" id="L81"> else errString = &quot;Text of line was: &quot; + txt;</span>
+
+<span class="fc" id="L83"> return String.format(&quot;[ERROR] line %d, pair %d: %s\n%s\tContext: %s&quot;,</span>
+<span class="fc" id="L84"> line, numPairs, msg, hdr, errString);</span>
+ }
+}
+</pre><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.2.201808211720</span></div></body></html> \ No newline at end of file
diff --git a/docs/jacoco-ut/bjc.everge/ReplOpts.html b/docs/jacoco-ut/bjc.everge/ReplOpts.html
new file mode 100644
index 0000000..ff2c6e2
--- /dev/null
+++ b/docs/jacoco-ut/bjc.everge/ReplOpts.html
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>ReplOpts</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">everge</a> &gt; <a href="index.html" class="el_package">bjc.everge</a> &gt; <span class="el_class">ReplOpts</span></div><h1>ReplOpts</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">66 of 96</td><td class="ctr2">31%</td><td class="bar">18 of 18</td><td class="ctr2">0%</td><td class="ctr1">10</td><td class="ctr2">11</td><td class="ctr1">11</td><td class="ctr2">21</td><td class="ctr1">1</td><td class="ctr2">2</td></tr></tfoot><tbody><tr><td id="a0"><a href="ReplOpts.java.html#L51" class="el_method">equals(Object)</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="66" alt="66"/></td><td class="ctr2" id="c1">0%</td><td class="bar" id="d0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="18" alt="18"/></td><td class="ctr2" id="e0">0%</td><td class="ctr1" id="f0">10</td><td class="ctr2" id="g0">10</td><td class="ctr1" id="h0">11</td><td class="ctr2" id="i0">11</td><td class="ctr1" id="j0">1</td><td class="ctr2" id="k0">1</td></tr><tr><td id="a1"><a href="ReplOpts.java.html#L10" class="el_method">ReplOpts()</a></td><td class="bar" id="b1"><img src="../jacoco-resources/greenbar.gif" width="54" height="10" title="30" alt="30"/></td><td class="ctr2" id="c0">100%</td><td class="bar" id="d1"/><td class="ctr2" id="e1">n/a</td><td class="ctr1" id="f1">0</td><td class="ctr2" id="g1">1</td><td class="ctr1" id="h1">0</td><td class="ctr2" id="i1">10</td><td class="ctr1" id="j1">0</td><td class="ctr2" id="k1">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.2.201808211720</span></div></body></html> \ No newline at end of file
diff --git a/docs/jacoco-ut/bjc.everge/ReplOpts.java.html b/docs/jacoco-ut/bjc.everge/ReplOpts.java.html
new file mode 100644
index 0000000..1194cd3
--- /dev/null
+++ b/docs/jacoco-ut/bjc.everge/ReplOpts.java.html
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>ReplOpts.java</title><link rel="stylesheet" href="../jacoco-resources/prettify.css" type="text/css"/><script type="text/javascript" src="../jacoco-resources/prettify.js"></script></head><body onload="window['PR_TAB_WIDTH']=4;prettyPrint()"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">everge</a> &gt; <a href="index.source.html" class="el_package">bjc.everge</a> &gt; <span class="el_source">ReplOpts.java</span></div><h1>ReplOpts.java</h1><pre class="source lang-java linenums">package bjc.everge;
+
+import java.io.PrintStream;
+
+/**
+ * Options for processing ReplPairs.
+ *
+ * @author Ben Culkin.
+ */
+<span class="fc" id="L10">public class ReplOpts {</span>
+ /**
+ * The default priority.
+ */
+<span class="fc" id="L14"> public int defPrior = 0;</span>
+
+ /**
+ * The default stage.
+ */
+<span class="fc" id="L19"> public int defStage = 0;</span>
+
+ /**
+ * Whether to process multi-line defns.
+ */
+<span class="fc" id="L24"> public boolean defMulti = false;</span>
+
+ /**
+ * Default status.
+ */
+<span class="fc" id="L29"> public StageStatus defStatus = StageStatus.BOTH;</span>
+
+ /**
+ * Enable debug info.
+ */
+<span class="fc" id="L34"> public boolean isDebug = true;</span>
+
+ /**
+ * Enable trace info.
+ */
+<span class="fc" id="L39"> public boolean isTrace = false;</span>
+
+ /**
+ * Enable performance info.
+ */
+<span class="fc" id="L44"> public boolean isPerf = false;</span>
+
+<span class="fc" id="L46"> public PrintStream outStream = System.out;</span>
+<span class="fc" id="L47"> public PrintStream errStream = System.err;</span>
+
+ @Override
+ public boolean equals(Object o) {
+<span class="nc bnc" id="L51" title="All 2 branches missed."> if (o == null) return false;</span>
+
+<span class="nc bnc" id="L53" title="All 2 branches missed."> if (!getClass().equals(o.getClass())) return false;</span>
+
+<span class="nc" id="L55"> ReplOpts ro = (ReplOpts)o;</span>
+
+<span class="nc bnc" id="L57" title="All 2 branches missed."> if (isPerf != ro.isPerf) return false;</span>
+
+<span class="nc bnc" id="L59" title="All 2 branches missed."> if (isDebug != ro.isDebug) return false;</span>
+<span class="nc bnc" id="L60" title="All 2 branches missed."> if (isTrace != ro.isTrace) return false;</span>
+
+<span class="nc bnc" id="L62" title="All 2 branches missed."> if (defPrior != ro.defPrior) return false;</span>
+<span class="nc bnc" id="L63" title="All 2 branches missed."> if (defStage != ro.defStage) return false;</span>
+<span class="nc bnc" id="L64" title="All 2 branches missed."> if (defMulti != ro.defMulti) return false;</span>
+
+<span class="nc bnc" id="L66" title="All 2 branches missed."> if (defStatus != ro.defStatus) return false;</span>
+
+<span class="nc" id="L68"> return true;</span>
+ }
+}
+</pre><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.2.201808211720</span></div></body></html> \ No newline at end of file
diff --git a/docs/jacoco-ut/bjc.everge/ReplPair.html b/docs/jacoco-ut/bjc.everge/ReplPair.html
new file mode 100644
index 0000000..f4c8951
--- /dev/null
+++ b/docs/jacoco-ut/bjc.everge/ReplPair.html
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>ReplPair</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">everge</a> &gt; <a href="index.html" class="el_package">bjc.everge</a> &gt; <span class="el_class">ReplPair</span></div><h1>ReplPair</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">800 of 1,622</td><td class="ctr2">50%</td><td class="bar">87 of 186</td><td class="ctr2">53%</td><td class="ctr1">73</td><td class="ctr2">123</td><td class="ctr1">138</td><td class="ctr2">336</td><td class="ctr1">2</td><td class="ctr2">17</td></tr></tfoot><tbody><tr><td id="a7"><a href="ReplPair.java.html#L187" class="el_method">readList(List, Scanner, List, ReplOpts)</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="51" height="10" title="282" alt="282"/><img src="../jacoco-resources/greenbar.gif" width="68" height="10" title="370" alt="370"/></td><td class="ctr2" id="c12">56%</td><td class="bar" id="d0"><img src="../jacoco-resources/redbar.gif" width="45" height="10" title="31" alt="31"/><img src="../jacoco-resources/greenbar.gif" width="74" height="10" title="51" alt="51"/></td><td class="ctr2" id="e2">62%</td><td class="ctr1" id="f0">25</td><td class="ctr2" id="g0">43</td><td class="ctr1" id="h1">36</td><td class="ctr2" id="i0">125</td><td class="ctr1" id="j2">0</td><td class="ctr2" id="k0">1</td></tr><tr><td id="a4"><a href="ReplPair.java.html#L623" class="el_method">readGlobal(String, Scanner, List, ReplOpts, IntHolder, IntHolder)</a></td><td class="bar" id="b1"><img src="../jacoco-resources/redbar.gif" width="34" height="10" title="186" alt="186"/><img src="../jacoco-resources/greenbar.gif" width="16" height="10" title="91" alt="91"/></td><td class="ctr2" id="c14">32%</td><td class="bar" id="d1"><img src="../jacoco-resources/redbar.gif" width="26" height="10" title="18" alt="18"/><img src="../jacoco-resources/greenbar.gif" width="17" height="10" title="12" alt="12"/></td><td class="ctr2" id="e7">40%</td><td class="ctr1" id="f1">17</td><td class="ctr2" id="g1">24</td><td class="ctr1" id="h0">43</td><td class="ctr2" id="i1">69</td><td class="ctr1" id="j3">0</td><td class="ctr2" id="k1">1</td></tr><tr><td id="a3"><a href="ReplPair.java.html#L767" class="el_method">getControls(String, List, ReplOpts, IntHolder, IntHolder, String)</a></td><td class="bar" id="b2"><img src="../jacoco-resources/redbar.gif" width="24" height="10" title="135" alt="135"/></td><td class="ctr2" id="c15">0%</td><td class="bar" id="d2"><img src="../jacoco-resources/redbar.gif" width="17" height="10" title="12" alt="12"/></td><td class="ctr2" id="e8">0%</td><td class="ctr1" id="f3">7</td><td class="ctr2" id="g4">7</td><td class="ctr1" id="h3">25</td><td class="ctr2" id="i3">25</td><td class="ctr1" id="j0">1</td><td class="ctr2" id="k2">1</td></tr><tr><td id="a10"><a href="ReplPair.java.html#L503" class="el_method">readName(String, Scanner, List, ReplPair, ReplOpts, IntHolder, IntHolder)</a></td><td class="bar" id="b3"><img src="../jacoco-resources/redbar.gif" width="24" height="10" title="131" alt="131"/><img src="../jacoco-resources/greenbar.gif" width="20" height="10" title="110" alt="110"/></td><td class="ctr2" id="c13">45%</td><td class="bar" id="d3"><img src="../jacoco-resources/redbar.gif" width="16" height="10" title="11" alt="11"/><img src="../jacoco-resources/greenbar.gif" width="19" height="10" title="13" alt="13"/></td><td class="ctr2" id="e4">54%</td><td class="ctr1" id="f2">10</td><td class="ctr2" id="g2">17</td><td class="ctr1" id="h2">30</td><td class="ctr2" id="i2">60</td><td class="ctr1" id="j4">0</td><td class="ctr2" id="k3">1</td></tr><tr><td id="a9"><a href="ReplPair.java.html#L426" class="el_method">readMultiLine(String, Scanner, ReplOpts, List, String, IntHolder)</a></td><td class="bar" id="b4"><img src="../jacoco-resources/redbar.gif" width="6" height="10" title="37" alt="37"/><img src="../jacoco-resources/greenbar.gif" width="15" height="10" title="84" alt="84"/></td><td class="ctr2" id="c11">69%</td><td class="bar" id="d4"><img src="../jacoco-resources/redbar.gif" width="11" height="10" title="8" alt="8"/><img src="../jacoco-resources/greenbar.gif" width="17" height="10" title="12" alt="12"/></td><td class="ctr2" id="e3">60%</td><td class="ctr1" id="f4">6</td><td class="ctr2" id="g3">11</td><td class="ctr1" id="h4">2</td><td class="ctr2" id="i4">20</td><td class="ctr1" id="j5">0</td><td class="ctr2" id="k4">1</td></tr><tr><td id="a2"><a href="ReplPair.java.html#L485" class="el_method">equals(Object)</a></td><td class="bar" id="b5"><img src="../jacoco-resources/redbar.gif" width="2" height="10" title="12" alt="12"/><img src="../jacoco-resources/greenbar.gif" width="6" height="10" title="36" alt="36"/></td><td class="ctr2" id="c10">75%</td><td class="bar" id="d5"><img src="../jacoco-resources/redbar.gif" width="8" height="10" title="6" alt="6"/><img src="../jacoco-resources/greenbar.gif" width="8" height="10" title="6" alt="6"/></td><td class="ctr2" id="e5">50%</td><td class="ctr1" id="f5">6</td><td class="ctr2" id="g5">7</td><td class="ctr1" id="h6">0</td><td class="ctr2" id="i5">8</td><td class="ctr1" id="j6">0</td><td class="ctr2" id="k5">1</td></tr><tr><td id="a16"><a href="ReplPair.java.html#L469" class="el_method">toString()</a></td><td class="bar" id="b6"><img src="../jacoco-resources/redbar.gif" width="1" height="10" title="10" alt="10"/><img src="../jacoco-resources/greenbar.gif" width="6" height="10" title="33" alt="33"/></td><td class="ctr2" id="c9">76%</td><td class="bar" id="d6"><img src="../jacoco-resources/redbar.gif" width="1" height="10" title="1" alt="1"/><img src="../jacoco-resources/greenbar.gif" width="1" height="10" title="1" alt="1"/></td><td class="ctr2" id="e6">50%</td><td class="ctr1" id="f6">1</td><td class="ctr2" id="g6">2</td><td class="ctr1" id="h7">0</td><td class="ctr2" id="i8">3</td><td class="ctr1" id="j7">0</td><td class="ctr2" id="k6">1</td></tr><tr><td id="a15"><a href="ReplPair.java.html#L78" class="el_method">ReplPair(String, String, String)</a></td><td class="bar" id="b7"><img src="../jacoco-resources/redbar.gif" width="1" height="10" title="7" alt="7"/></td><td class="ctr2" id="c16">0%</td><td class="bar" id="d9"/><td class="ctr2" id="e9">n/a</td><td class="ctr1" id="f7">1</td><td class="ctr2" id="g9">1</td><td class="ctr1" id="h5">2</td><td class="ctr2" id="i9">2</td><td class="ctr1" id="j1">1</td><td class="ctr2" id="k7">1</td></tr><tr><td id="a5"><a href="ReplPair.java.html#L142" class="el_method">readList(List, Scanner)</a></td><td class="bar" id="b8"><img src="../jacoco-resources/greenbar.gif" width="3" height="10" title="20" alt="20"/></td><td class="ctr2" id="c0">100%</td><td class="bar" id="d7"><img src="../jacoco-resources/greenbar.gif" width="2" height="10" title="2" alt="2"/></td><td class="ctr2" id="e0">100%</td><td class="ctr1" id="f8">0</td><td class="ctr2" id="g7">2</td><td class="ctr1" id="h8">0</td><td class="ctr2" id="i7">5</td><td class="ctr1" id="j8">0</td><td class="ctr2" id="k8">1</td></tr><tr><td id="a14"><a href="ReplPair.java.html#L24" class="el_method">ReplPair(String, String, int, String)</a></td><td class="bar" id="b9"><img src="../jacoco-resources/greenbar.gif" width="3" height="10" title="18" alt="18"/></td><td class="ctr2" id="c1">100%</td><td class="bar" id="d10"/><td class="ctr2" id="e10">n/a</td><td class="ctr1" id="f9">0</td><td class="ctr2" id="g10">1</td><td class="ctr1" id="h9">0</td><td class="ctr2" id="i6">7</td><td class="ctr1" id="j9">0</td><td class="ctr2" id="k9">1</td></tr><tr><td id="a1"><a href="ReplPair.java.html#L478" class="el_method">compareTo(ReplPair)</a></td><td class="bar" id="b10"><img src="../jacoco-resources/greenbar.gif" width="3" height="10" title="17" alt="17"/></td><td class="ctr2" id="c2">100%</td><td class="bar" id="d8"><img src="../jacoco-resources/greenbar.gif" width="2" height="10" title="2" alt="2"/></td><td class="ctr2" id="e1">100%</td><td class="ctr1" id="f10">0</td><td class="ctr2" id="g8">2</td><td class="ctr1" id="h10">0</td><td class="ctr2" id="i10">2</td><td class="ctr1" id="j10">0</td><td class="ctr2" id="k10">1</td></tr><tr><td id="a8"><a href="ReplPair.java.html#L125" class="el_method">readList(Scanner)</a></td><td class="bar" id="b11"><img src="../jacoco-resources/greenbar.gif" width="1" height="10" title="8" alt="8"/></td><td class="ctr2" id="c3">100%</td><td class="bar" id="d11"/><td class="ctr2" id="e11">n/a</td><td class="ctr1" id="f11">0</td><td class="ctr2" id="g11">1</td><td class="ctr1" id="h11">0</td><td class="ctr2" id="i11">2</td><td class="ctr1" id="j11">0</td><td class="ctr2" id="k11">1</td></tr><tr><td id="a6"><a href="ReplPair.java.html#L167" class="el_method">readList(List, Scanner, List)</a></td><td class="bar" id="b12"><img src="../jacoco-resources/greenbar.gif" width="1" height="10" title="8" alt="8"/></td><td class="ctr2" id="c4">100%</td><td class="bar" id="d12"/><td class="ctr2" id="e12">n/a</td><td class="ctr1" id="f12">0</td><td class="ctr2" id="g12">1</td><td class="ctr1" id="h12">0</td><td class="ctr2" id="i15">1</td><td class="ctr1" id="j12">0</td><td class="ctr2" id="k12">1</td></tr><tr><td id="a11"><a href="ReplPair.java.html#L52" class="el_method">ReplPair()</a></td><td class="bar" id="b13"><img src="../jacoco-resources/greenbar.gif" width="1" height="10" title="7" alt="7"/></td><td class="ctr2" id="c5">100%</td><td class="bar" id="d13"/><td class="ctr2" id="e13">n/a</td><td class="ctr1" id="f13">0</td><td class="ctr2" id="g13">1</td><td class="ctr1" id="h13">0</td><td class="ctr2" id="i12">2</td><td class="ctr1" id="j13">0</td><td class="ctr2" id="k13">1</td></tr><tr><td id="a13"><a href="ReplPair.java.html#L92" class="el_method">ReplPair(String, String, int)</a></td><td class="bar" id="b14"><img src="../jacoco-resources/greenbar.gif" width="1" height="10" title="7" alt="7"/></td><td class="ctr2" id="c6">100%</td><td class="bar" id="d14"/><td class="ctr2" id="e14">n/a</td><td class="ctr1" id="f14">0</td><td class="ctr2" id="g14">1</td><td class="ctr1" id="h14">0</td><td class="ctr2" id="i13">2</td><td class="ctr1" id="j14">0</td><td class="ctr2" id="k14">1</td></tr><tr><td id="a0"><a href="ReplPair.java.html#L464" class="el_method">apply(String)</a></td><td class="bar" id="b15"><img src="../jacoco-resources/greenbar.gif" width="1" height="10" title="7" alt="7"/></td><td class="ctr2" id="c7">100%</td><td class="bar" id="d15"/><td class="ctr2" id="e15">n/a</td><td class="ctr1" id="f15">0</td><td class="ctr2" id="g15">1</td><td class="ctr1" id="h15">0</td><td class="ctr2" id="i16">1</td><td class="ctr1" id="j15">0</td><td class="ctr2" id="k15">1</td></tr><tr><td id="a12"><a href="ReplPair.java.html#L64" class="el_method">ReplPair(String, String)</a></td><td class="bar" id="b16"><img src="../jacoco-resources/greenbar.gif" width="1" height="10" title="6" alt="6"/></td><td class="ctr2" id="c8">100%</td><td class="bar" id="d16"/><td class="ctr2" id="e16">n/a</td><td class="ctr1" id="f16">0</td><td class="ctr2" id="g16">1</td><td class="ctr1" id="h16">0</td><td class="ctr2" id="i14">2</td><td class="ctr1" id="j16">0</td><td class="ctr2" id="k16">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.2.201808211720</span></div></body></html> \ No newline at end of file
diff --git a/docs/jacoco-ut/bjc.everge/ReplPair.java.html b/docs/jacoco-ut/bjc.everge/ReplPair.java.html
new file mode 100644
index 0000000..7cfa2b5
--- /dev/null
+++ b/docs/jacoco-ut/bjc.everge/ReplPair.java.html
@@ -0,0 +1,815 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>ReplPair.java</title><link rel="stylesheet" href="../jacoco-resources/prettify.css" type="text/css"/><script type="text/javascript" src="../jacoco-resources/prettify.js"></script></head><body onload="window['PR_TAB_WIDTH']=4;prettyPrint()"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">everge</a> &gt; <a href="index.source.html" class="el_package">bjc.everge</a> &gt; <span class="el_source">ReplPair.java</span></div><h1>ReplPair.java</h1><pre class="source lang-java linenums">package bjc.everge;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Scanner;
+
+import java.util.function.UnaryOperator;
+
+import bjc.everge.ControlledString.Control;
+
+/**
+ * String pairs for replacements.
+ *
+ * @author Ben Culkin
+ */
+public class ReplPair implements Comparable&lt;ReplPair&gt;, UnaryOperator&lt;String&gt; {
+ // Line number we read this pair from
+ private int lno;
+
+ // Stage this pair is in
+ private int stage;
+
+ // Status of this pair with regards to doing staging stuff
+<span class="fc" id="L24"> private StageStatus stat = StageStatus.BOTH;</span>
+
+ /**
+ * The priority for this replacement.
+ */
+ public int priority;
+
+ /**
+ * The name of this replacement.
+ *
+ * Defaults to the 'find' string.
+ */
+ public String name;
+
+ /**
+ * The string to look for.
+ */
+ public String find;
+
+ /**
+ * The string to replace it with.
+ */
+ public String replace;
+
+ /**
+ * Create a new blank replacement pair.
+ */
+ public ReplPair() {
+<span class="fc" id="L52"> this(&quot;&quot;, &quot;&quot;, 1, null);</span>
+<span class="fc" id="L53"> }</span>
+
+ /**
+ * Create a new replacement pair with a priority of 1.
+ *
+ * @param f
+ * The string to find.
+ * @param r
+ * The string to replace.
+ */
+ public ReplPair(String f, String r) {
+<span class="fc" id="L64"> this(f, r, 1);</span>
+<span class="fc" id="L65"> }</span>
+
+ /**
+ * Create a new named replacement pair with a priority of 1.
+ *
+ * @param f
+ * The string to find.
+ * @param r
+ * The string to replace.
+ * @param n
+ * The name of the replacement pair.
+ */
+ public ReplPair(String f, String r, String n) {
+<span class="nc" id="L78"> this(f, r, 1, n);</span>
+<span class="nc" id="L79"> }</span>
+
+ /**
+ * Create a new replacement pair with a set priority.
+ *
+ * @param f
+ * The string to find.
+ * @param r
+ * The string to replace.
+ * @param p
+ * The priority for the replacement.
+ */
+ public ReplPair(String f, String r, int p) {
+<span class="fc" id="L92"> this(f, r, p, f);</span>
+<span class="fc" id="L93"> }</span>
+
+ /**
+ * Create a new replacement pair with a set priority and name.
+ *
+ * @param f
+ * The string to find.
+ * @param r
+ * The string to replace.
+ * @param n
+ * The name of the replacement pair.
+ * @param p
+ * The priority for the replacement.
+ */
+<span class="fc" id="L107"> public ReplPair(String f, String r, int p, String n) {</span>
+<span class="fc" id="L108"> find = f;</span>
+<span class="fc" id="L109"> replace = r;</span>
+
+<span class="fc" id="L111"> name = n;</span>
+
+<span class="fc" id="L113"> priority = p;</span>
+<span class="fc" id="L114"> }</span>
+
+ /**
+ * Read a list of replacement pairs from an input source.
+ *
+ * @param scn
+ * The source to read the replacements from.
+ * @return
+ * The list of replacements.
+ */
+ public static List&lt;ReplPair&gt; readList(Scanner scn) {
+<span class="fc" id="L125"> List&lt;ReplPair&gt; lst = new ArrayList&lt;&gt;();</span>
+
+<span class="fc" id="L127"> return readList(lst, scn);</span>
+ }
+
+ /**
+ * Read a list of replacement pairs from an input source, adding them to
+ * an existing list.
+ *
+ * @param detals
+ * The list to add the replacements to.
+ * @param scn
+ * The source to read the replacements from.
+ * @return
+ * The list of replacements.
+ */
+ public static List&lt;ReplPair&gt; readList(List&lt;ReplPair&gt; detals, Scanner scn) {
+<span class="fc" id="L142"> List&lt;ReplError&gt; errList = new ArrayList&lt;&gt;();</span>
+
+<span class="fc" id="L144"> List&lt;ReplPair&gt; rplPar = readList(detals, scn, errList);</span>
+
+<span class="fc bfc" id="L146" title="All 2 branches covered."> if (errList.size() != 0) {</span>
+<span class="fc" id="L147"> throw new ReplParseException(&quot;&quot;, errList);</span>
+ }
+
+<span class="fc" id="L150"> return rplPar;</span>
+ }
+
+ /**
+ * Read a list of replacement pairs from an input source, adding them to
+ * an existing list.
+ *
+ * @param detals
+ * The list to add the replacements to.
+ * @param scn
+ * The source to read the replacements from.
+ * @param errs
+ * The list to stick errors in.
+ * @return
+ * The list of replacements.
+ */
+ public static List&lt;ReplPair&gt; readList(List&lt;ReplPair&gt; detals, Scanner scn, List&lt;ReplError&gt; errs) {
+<span class="fc" id="L167"> return readList(detals, scn, errs, new ReplOpts());</span>
+ }
+
+ /**
+ * Read a list of replacement pairs from an input source, adding them to
+ * an existing list.
+ *
+ * @param detals
+ * The list to add the replacements to.
+ * @param scn
+ * The source to read the replacements from.
+ * @param errs
+ * The list to stick errors in.
+ * @param ropts
+ * The options to use when reading the pairs.
+ * @return
+ * The list of replacements.
+ */
+ public static List&lt;ReplPair&gt; readList(List&lt;ReplPair&gt; detals, Scanner scn,
+ List&lt;ReplError&gt; errs, ReplOpts ropts) {
+<span class="fc" id="L187"> IntHolder lno = new IntHolder();</span>
+<span class="fc" id="L188"> IntHolder pno = new IntHolder();</span>
+
+<span class="fc" id="L190"> List&lt;List&lt;ReplPair&gt;&gt; stages = new ArrayList&lt;&gt;();</span>
+<span class="fc" id="L191"> stages.add(new ArrayList&lt;ReplPair&gt;());</span>
+
+ // For every line in the source...
+<span class="fc bfc" id="L194" title="All 2 branches covered."> while (scn.hasNextLine()) {</span>
+<span class="fc" id="L195"> String name = scn.nextLine().trim();</span>
+<span class="fc" id="L196"> lno.incr();</span>
+
+ // If its commented or blank, skip it
+<span class="fc bfc" id="L199" title="All 2 branches covered."> if (name.equals(&quot;&quot;)) continue;</span>
+<span class="fc bfc" id="L200" title="All 2 branches covered."> if (name.startsWith(&quot;#&quot;)) continue;</span>
+
+ // Global control. Process it.
+<span class="fc bfc" id="L203" title="All 2 branches covered."> if (name.startsWith(&quot;|//&quot;)) {</span>
+<span class="fc" id="L204"> readGlobal(name, scn, errs, ropts, lno, pno);</span>
+
+<span class="fc" id="L206"> continue;</span>
+ }
+
+<span class="fc" id="L209"> ReplPair rp = new ReplPair();</span>
+
+<span class="fc" id="L211"> rp.priority = ropts.defPrior;</span>
+<span class="fc" id="L212"> rp.stat = ropts.defStatus;</span>
+<span class="fc" id="L213"> rp.lno = lno.get();</span>
+<span class="fc" id="L214"> rp.stage = ropts.defStage;</span>
+
+<span class="fc" id="L216"> boolean isMulti = ropts.defMulti;</span>
+
+ {
+<span class="fc" id="L219"> String tmpName = readName(name, scn, errs, rp, ropts, lno, pno);</span>
+<span class="pc bpc" id="L220" title="1 of 2 branches missed."> if (tmpName == null) continue;</span>
+<span class="fc" id="L221"> name = tmpName;</span>
+ }
+
+<span class="fc" id="L224"> rp.find = name;</span>
+<span class="pc bpc" id="L225" title="1 of 2 branches missed."> if (rp.name == null) rp.name = name;</span>
+
+ // We started to process the pair, mark it as being
+ // started
+<span class="fc" id="L229"> pno.incr();</span>
+<span class="fc" id="L230"> String body = null;</span>
+
+ // Read in the next uncommented line
+ do {
+<span class="fc bfc" id="L234" title="All 2 branches covered."> if (!scn.hasNextLine()) break; </span>
+
+<span class="fc" id="L236"> body = scn.nextLine().trim();</span>
+<span class="fc" id="L237"> lno.incr();</span>
+<span class="pc bpc" id="L238" title="1 of 2 branches missed."> } while (body.startsWith(&quot;#&quot;));</span>
+
+<span class="fc bfc" id="L240" title="All 2 branches covered."> if (body == null) {</span>
+<span class="fc" id="L241"> String msg = </span>
+ &quot;Ran out of input looking for replacement body for raw name '&quot; + name + &quot;'&quot;;
+
+<span class="fc" id="L244"> errs.add(new ReplError(lno, pno, msg, null));</span>
+<span class="fc" id="L245"> break;</span>
+ }
+
+<span class="fc" id="L248"> isMulti = ropts.defMulti;</span>
+
+ // Body has attached controls, process them.
+<span class="pc bpc" id="L251" title="1 of 2 branches missed."> if (body.startsWith(&quot;//&quot;)) {</span>
+<span class="nc" id="L252"> body = body.substring(2);</span>
+
+<span class="nc" id="L254"> String[] bodyBits = StringUtils.escapeSplit(&quot;|&quot;, &quot;//&quot;, body);</span>
+<span class="nc bnc" id="L255" title="All 2 branches missed."> if (bodyBits.length &lt; 2) {</span>
+<span class="nc" id="L256"> String msg = &quot;Did not find control terminator (//) in body where it should be&quot;;</span>
+
+<span class="nc" id="L258"> errs.add(new ReplError(lno, pno, msg, body));</span>
+<span class="nc" id="L259"> continue;</span>
+ }
+
+<span class="nc" id="L262"> String contBody = bodyBits[0];</span>
+<span class="nc" id="L263"> String actBody = bodyBits[1];</span>
+
+ // Split out each control
+<span class="nc" id="L266"> String[] bits = StringUtils.escapeSplit(&quot;|&quot;, &quot;;&quot;, actBody);</span>
+
+<span class="nc bnc" id="L268" title="All 2 branches missed."> for (String bit : bits) {</span>
+<span class="nc" id="L269"> String bitHead = bit.toUpperCase();</span>
+<span class="nc" id="L270"> String bitBody = bit;</span>
+
+<span class="nc" id="L272"> String[] bots = StringUtils.escapeSplit(&quot;|&quot;, &quot;/&quot;, bit);</span>
+<span class="nc bnc" id="L273" title="All 2 branches missed."> if (bots.length &gt; 1) {</span>
+<span class="nc" id="L274"> bitHead = bots[0].toUpperCase();</span>
+<span class="nc" id="L275"> bitBody = bots[1];</span>
+ }
+
+<span class="nc bnc" id="L278" title="All 4 branches missed."> switch (bitHead) {</span>
+ case &quot;MULTITRUE&quot;:
+ case &quot;MULTIT&quot;:
+ case &quot;MT&quot;:
+<span class="nc" id="L282"> isMulti = true;</span>
+<span class="nc" id="L283"> break;</span>
+ case &quot;MULTIFALSE&quot;:
+ case &quot;MULTIF&quot;:
+ case &quot;MF&quot;:
+<span class="nc" id="L287"> isMulti = false;</span>
+<span class="nc" id="L288"> break;</span>
+ case &quot;MULTI&quot;:
+ case &quot;M&quot;:
+<span class="nc" id="L291"> isMulti = Boolean.parseBoolean(bitBody);</span>
+<span class="nc" id="L292"> break;</span>
+ default:
+<span class="nc" id="L294"> errs.add(new ReplError(lno, pno, String.format(&quot;Invalid control name '%s'&quot;, bitHead), body));</span>
+ break;
+ }
+ }
+
+<span class="nc" id="L299"> body = actBody;</span>
+ }
+
+<span class="fc bfc" id="L302" title="All 2 branches covered."> if (isMulti) {</span>
+<span class="fc" id="L303"> String tmp = readMultiLine(body, scn, ropts, errs, &quot;body&quot;, lno);</span>
+<span class="pc bpc" id="L304" title="1 of 2 branches missed."> if (tmp == null) continue;</span>
+<span class="fc" id="L305"> body = tmp;</span>
+ }
+
+<span class="fc" id="L308"> rp.replace = body;</span>
+
+<span class="fc" id="L310"> List&lt;ReplPair&gt; stageList = null;</span>
+<span class="pc bpc" id="L311" title="1 of 4 branches missed."> if (rp.stage == 0 || stages.size() &lt; (rp.stage - 1)) {</span>
+<span class="fc" id="L312"> stageList = stages.get(rp.stage);</span>
+
+<span class="pc bpc" id="L314" title="1 of 2 branches missed."> if (stageList == null) {</span>
+<span class="nc" id="L315"> stageList = new ArrayList&lt;&gt;();</span>
+
+<span class="nc" id="L317"> stages.add(rp.stage, stageList);</span>
+ }
+ } else {
+<span class="fc bfc" id="L320" title="All 2 branches covered."> for (int i = stages.size(); i &lt;= rp.stage; i++) {</span>
+<span class="fc" id="L321"> stages.add(new ArrayList&lt;&gt;());</span>
+ }
+
+<span class="fc" id="L324"> stageList = stages.get(rp.stage);</span>
+ }
+
+<span class="pc bpc" id="L327" title="1 of 2 branches missed."> if (ropts.isTrace) {</span>
+<span class="nc" id="L328"> ropts.errStream.printf(&quot;\t[DEBUG] Stage %d: Added %s\n\t\tContents: %s\n&quot;,</span>
+<span class="nc" id="L329"> rp.stage, rp, stageList);</span>
+ }
+
+<span class="fc" id="L332"> stageList.add(rp);</span>
+<span class="fc" id="L333"> }</span>
+
+ // Special-case one-stage processing.
+<span class="fc bfc" id="L336" title="All 2 branches covered."> if (stages.size() == 1) {</span>
+<span class="pc bpc" id="L337" title="1 of 2 branches missed."> if (ropts.isTrace) ropts.errStream.printf(&quot;\t[DEBUG] Executing single-stage bypass\n&quot;);</span>
+
+<span class="fc bfc" id="L339" title="All 2 branches covered."> for (ReplPair rp : stages.iterator().next()) {</span>
+<span class="pc bpc" id="L340" title="1 of 2 branches missed."> if (rp.stat == StageStatus.INTERNAL) {</span>
+<span class="nc bnc" id="L341" title="All 2 branches missed."> if (ropts.isTrace) ropts.errStream.printf(&quot;\t[DEBUG] Excluding internal RP %s\n&quot;, rp);</span>
+
+ continue;
+ }
+
+<span class="fc" id="L346"> detals.add(rp);</span>
+<span class="fc" id="L347"> }</span>
+
+<span class="fc" id="L349"> detals.sort(null);</span>
+
+<span class="fc" id="L351"> return detals;</span>
+ }
+
+ // Handle stages
+<span class="fc" id="L355"> List&lt;ReplPair&gt; tmpList = new ArrayList&lt;&gt;();</span>
+<span class="fc" id="L356"> tmpList.addAll(detals);</span>
+
+<span class="pc bpc" id="L358" title="1 of 2 branches missed."> if (ropts.isTrace) ropts.errStream.printf(&quot;\t[DEBUG] Stages: %s\n&quot;, stages);</span>
+
+<span class="fc" id="L360"> int procStg = 0;</span>
+<span class="fc bfc" id="L361" title="All 2 branches covered."> for (List&lt;ReplPair&gt; stageList : stages) {</span>
+<span class="fc" id="L362"> procStg += 1;</span>
+<span class="fc" id="L363"> List&lt;ReplPair&gt; curStage = new ArrayList&lt;&gt;();</span>
+
+<span class="pc bpc" id="L365" title="1 of 2 branches missed."> if (ropts.isTrace) ropts.errStream.printf(&quot;\t[DEBUG] Staging stage %d of %d: %s\n&quot;,</span>
+<span class="nc" id="L366"> procStg, stageList.size(), stageList);</span>
+
+<span class="fc bfc" id="L368" title="All 2 branches covered."> for (ReplPair rp : stageList) {</span>
+ // Process through every pair in the previous
+ // stages
+<span class="fc bfc" id="L371" title="All 2 branches covered."> for (ReplPair curPar : tmpList) {</span>
+<span class="fc" id="L372"> String tmp = rp.replace.replaceAll(curPar.find, curPar.replace);</span>
+
+<span class="pc bpc" id="L374" title="3 of 4 branches missed."> if (ropts.isTrace &amp;&amp; !rp.replace.equals(tmp)) {</span>
+<span class="nc" id="L375"> ropts.errStream.printf(&quot;\t[DEBUG] Staged '%s' -&gt; '%s'\t%s\n&quot;,</span>
+ rp.replace, tmp, curPar);
+ }
+
+<span class="fc" id="L379"> rp.replace = tmp;</span>
+<span class="fc" id="L380"> }</span>
+
+ // If we're external; add straight to the output
+<span class="fc bfc" id="L383" title="All 2 branches covered."> if (rp.stat == StageStatus.EXTERNAL) {</span>
+<span class="pc bpc" id="L384" title="1 of 2 branches missed."> if (ropts.isTrace) {</span>
+<span class="nc" id="L385"> ropts.errStream.printf(&quot;\t[DEBUG] Skipped external for staging: %s\n&quot;,</span>
+ rp);
+ }
+
+<span class="fc" id="L389"> detals.add(rp);</span>
+ } else {
+<span class="pc bpc" id="L391" title="1 of 2 branches missed."> if (ropts.isTrace) {</span>
+<span class="nc" id="L392"> ropts.errStream.printf(&quot;\t[DEBUG] Added to stage %d: %s\n\t\tContents: %s\n&quot;,</span>
+<span class="nc" id="L393"> procStg, rp, curStage);</span>
+ }
+
+<span class="fc" id="L396"> curStage.add(rp);</span>
+ }
+<span class="fc" id="L398"> }</span>
+
+<span class="fc" id="L400"> tmpList.addAll(curStage);</span>
+<span class="fc" id="L401"> tmpList.sort(null);</span>
+<span class="fc" id="L402"> }</span>
+
+ // Copy over to output, excluding internals
+<span class="fc bfc" id="L405" title="All 2 branches covered."> for (ReplPair rp : tmpList) {</span>
+<span class="fc bfc" id="L406" title="All 2 branches covered."> if (rp.stat == StageStatus.INTERNAL) {</span>
+<span class="pc bpc" id="L407" title="1 of 2 branches missed."> if (ropts.isTrace) ropts.errStream.printf(&quot;\t[DEBUG] Excluded internal: %s\n&quot;, rp);</span>
+
+ continue;
+ }
+
+<span class="fc" id="L412"> detals.add(rp);</span>
+<span class="fc" id="L413"> }</span>
+
+<span class="fc" id="L415"> detals.sort(null);</span>
+
+<span class="pc bpc" id="L417" title="1 of 2 branches missed."> if (ropts.isTrace) {</span>
+<span class="nc" id="L418"> ropts.errStream.printf(&quot;\t[DEBUG] Final output: %s\n&quot;, detals);</span>
+ }
+
+<span class="fc" id="L421"> return detals;</span>
+ }
+
+ private static String readMultiLine(String lead, Scanner src, ReplOpts ropts,
+ List&lt;ReplError&gt; errs, String typ, IntHolder lno) {
+<span class="fc" id="L426"> String tmp = lead;</span>
+
+<span class="pc bpc" id="L428" title="3 of 4 branches missed."> if (ropts.isTrace &amp;&amp; tmp.endsWith(&quot;\\&quot;)) </span>
+<span class="nc" id="L429"> ropts.errStream.printf(&quot;\t[TRACE] Starting multi-line parse for %s '%s'\n&quot;, typ, tmp);</span>
+
+<span class="fc" id="L431"> boolean didMulti = tmp.endsWith(&quot;\\&quot;);</span>
+<span class="fc bfc" id="L432" title="All 2 branches covered."> while (tmp.endsWith(&quot;\\&quot;)) {</span>
+<span class="fc" id="L433"> boolean incNL = tmp.endsWith(&quot;|\\&quot;);</span>
+
+<span class="pc bpc" id="L435" title="1 of 2 branches missed."> if (!src.hasNextLine()) break;</span>
+
+<span class="fc" id="L437"> String nxt = src.nextLine().trim();</span>
+<span class="fc" id="L438"> lno.incr();</span>
+
+<span class="fc bfc" id="L440" title="All 2 branches covered."> if (nxt.startsWith(&quot;#&quot;)) continue;</span>
+
+<span class="fc bfc" id="L442" title="All 2 branches covered."> String nlStr = incNL ? &quot;\n&quot; : &quot;&quot;;</span>
+
+<span class="pc bpc" id="L444" title="1 of 2 branches missed."> if (tmp.endsWith(&quot;\\&quot;)) {</span>
+<span class="fc bfc" id="L445" title="All 2 branches covered."> if (incNL) {</span>
+<span class="fc" id="L446"> tmp = tmp.substring(0, tmp.length() - 2);</span>
+ } else {
+<span class="fc" id="L448"> tmp = tmp.substring(0, tmp.length() - 1);</span>
+ }
+ }
+
+<span class="fc" id="L452"> tmp = String.format(&quot;%s%s%s&quot;, tmp, nlStr, nxt);</span>
+<span class="fc" id="L453"> }</span>
+
+<span class="pc bpc" id="L455" title="3 of 4 branches missed."> if (ropts.isTrace &amp;&amp; didMulti)</span>
+<span class="nc" id="L456"> ropts.errStream.printf(&quot;\t[TRACE] Finished multi-line parse for %s:\n%s\n.\n&quot;,</span>
+ typ, tmp);
+
+<span class="fc" id="L459"> return tmp;</span>
+ }
+
+ @Override
+ public String apply(String inp) {
+<span class="fc" id="L464"> return inp.replaceAll(find, replace);</span>
+ }
+
+ @Override
+ public String toString() {
+<span class="fc" id="L469"> String nameStr = &quot;&quot;;</span>
+
+<span class="pc bpc" id="L471" title="1 of 2 branches missed."> if (!find.equals(name)) nameStr = String.format(&quot;(%s)&quot;, name);</span>
+
+<span class="fc" id="L473"> return String.format(&quot;%ss/%s/%s/p(%d)&quot;, nameStr, find, replace, priority);</span>
+ }
+
+ @Override
+ public int compareTo(ReplPair rp) {
+<span class="fc bfc" id="L478" title="All 2 branches covered."> if (this.priority == rp.priority) return this.lno - rp.lno;</span>
+
+<span class="fc" id="L480"> return rp.priority - this.priority;</span>
+ }
+
+ @Override
+ public boolean equals(Object o) {
+<span class="pc bpc" id="L485" title="1 of 2 branches missed."> if (o == null) return false;</span>
+
+<span class="pc bpc" id="L487" title="1 of 2 branches missed."> if (!getClass().equals(o.getClass())) return false;</span>
+
+<span class="fc" id="L489"> ReplPair ro = (ReplPair)o;</span>
+
+<span class="pc bpc" id="L491" title="1 of 2 branches missed."> if (!find.equals(ro.find)) return false;</span>
+ // lno is not a field we consider for equality
+<span class="pc bpc" id="L493" title="1 of 2 branches missed."> if (!name.equals(ro.name)) return false;</span>
+<span class="pc bpc" id="L494" title="1 of 2 branches missed."> if (priority != ro.priority) return false;</span>
+<span class="pc bpc" id="L495" title="1 of 2 branches missed."> if (!replace.equals(ro.name)) return false;</span>
+ // stat is not a field we consider for equality
+
+<span class="fc" id="L498"> return true;</span>
+ }
+
+ private static String readName(String nam, Scanner scn, List&lt;ReplError&gt; errs,
+ ReplPair rp, ReplOpts ropts, IntHolder lno, IntHolder pno) {
+<span class="fc" id="L503"> String name = nam;</span>
+
+<span class="fc" id="L505"> boolean isMulti = ropts.defMulti;</span>
+
+ // Name has attached controls, process them.
+<span class="fc bfc" id="L508" title="All 2 branches covered."> if (name.startsWith(&quot;//&quot;)) {</span>
+<span class="fc" id="L509"> name = name.substring(2);</span>
+
+<span class="fc" id="L511"> String[] nameBits = StringUtils.escapeSplit(&quot;|&quot;, &quot;//&quot;, name);</span>
+
+<span class="pc bpc" id="L513" title="1 of 2 branches missed."> if (nameBits.length &lt; 2) {</span>
+<span class="nc" id="L514"> String msg = &quot;Did not find control terminator (//) in name where it should be&quot;;</span>
+
+<span class="nc" id="L516"> errs.add(new ReplError(lno, pno, msg, name));</span>
+<span class="nc" id="L517"> return null;</span>
+ }
+
+<span class="fc" id="L520"> String contName = nameBits[0];</span>
+<span class="fc" id="L521"> String actName = nameBits[1];</span>
+
+ // Split out each control
+<span class="fc" id="L524"> String[] bits = StringUtils.escapeSplit(&quot;|&quot;, &quot;;&quot;, contName);</span>
+
+<span class="fc bfc" id="L526" title="All 2 branches covered."> for (String bit : bits) {</span>
+<span class="fc" id="L527"> String bitHead = bit.toUpperCase();</span>
+<span class="fc" id="L528"> String bitBody = bit;</span>
+
+<span class="fc" id="L530"> String[] bots = StringUtils.escapeSplit(&quot;|&quot;, &quot;/&quot;, bit);</span>
+
+<span class="fc bfc" id="L532" title="All 2 branches covered."> if (bots.length &gt; 1) {</span>
+<span class="fc" id="L533"> bitHead = bots[0].toUpperCase();</span>
+<span class="fc" id="L534"> bitBody = bots[1];</span>
+ }
+
+<span class="pc bpc" id="L537" title="6 of 10 branches missed."> switch (bitHead) {</span>
+ case &quot;NAME&quot;:
+ case &quot;N&quot;:
+<span class="nc" id="L540"> rp.name = bitBody;</span>
+<span class="nc" id="L541"> break;</span>
+ case &quot;PRIORITY&quot;:
+ case &quot;PRIOR&quot;:
+ case &quot;P&quot;:
+ try {
+<span class="fc" id="L546"> rp.priority = Integer.parseInt(bitBody);</span>
+<span class="nc" id="L547"> } catch (NumberFormatException nfex) {</span>
+<span class="nc" id="L548"> String errMsg = String.format(&quot;'%s' is not a valid priority (must be an integer)&quot;, bitBody);</span>
+<span class="nc" id="L549"> errs.add(new ReplError(lno, pno, errMsg, name));</span>
+<span class="fc" id="L550"> }</span>
+<span class="nc" id="L551"> break;</span>
+ case &quot;STAGE&quot;:
+ case &quot;S&quot;:
+ try {
+<span class="fc" id="L555"> int tmpStage = Integer.parseInt(bitBody);</span>
+<span class="pc bpc" id="L556" title="1 of 2 branches missed."> if (tmpStage &lt; 0) {</span>
+<span class="nc" id="L557"> String errMsg = String.format(&quot;'%s' is not a valid stage (must be a positive integer)&quot;, bitBody);</span>
+<span class="nc" id="L558"> errs.add(new ReplError(lno, pno, errMsg, name));</span>
+
+<span class="nc" id="L560"> break;</span>
+ }
+<span class="fc" id="L562"> rp.stage = tmpStage;</span>
+<span class="nc" id="L563"> } catch (NumberFormatException nfex) {</span>
+<span class="nc" id="L564"> String errMsg = String.format(&quot;'%s' is not a valid stage (must be a positive integer)&quot;, bitBody);</span>
+<span class="nc" id="L565"> errs.add(new ReplError(lno, pno, errMsg, name));</span>
+<span class="fc" id="L566"> }</span>
+<span class="nc" id="L567"> break;</span>
+ case &quot;MULTITRUE&quot;:
+ case &quot;MULTIT&quot;:
+ case &quot;MT&quot;:
+<span class="nc" id="L571"> isMulti = true;</span>
+<span class="nc" id="L572"> break;</span>
+ case &quot;MULTIFALSE&quot;:
+ case &quot;MULTIF&quot;:
+ case &quot;MF&quot;:
+<span class="nc" id="L576"> isMulti = false;</span>
+<span class="nc" id="L577"> break;</span>
+ case &quot;MULTI&quot;:
+ case &quot;M&quot;:
+<span class="nc" id="L580"> isMulti = Boolean.parseBoolean(bitBody);</span>
+<span class="nc" id="L581"> break;</span>
+ case &quot;INTERNAL&quot;:
+ case &quot;INT&quot;:
+ case &quot;I&quot;:
+<span class="fc" id="L585"> rp.stat = StageStatus.INTERNAL;</span>
+<span class="fc" id="L586"> break;</span>
+ case &quot;EXTERNAL&quot;:
+ case &quot;EXT&quot;:
+ case &quot;E&quot;:
+<span class="fc" id="L590"> rp.stat = StageStatus.EXTERNAL;</span>
+<span class="fc" id="L591"> break;</span>
+ case &quot;BOTH&quot;:
+ case &quot;B&quot;:
+<span class="nc" id="L594"> rp.stat = StageStatus.BOTH;</span>
+<span class="nc" id="L595"> break;</span>
+ default:
+ {
+<span class="nc" id="L598"> ReplError erd = new ReplError(lno, pno,</span>
+<span class="nc" id="L599"> String.format(&quot;Unknown control name '%s' for name '%s'&quot;,</span>
+ bitHead, name), name);
+
+<span class="nc" id="L602"> errs.add(erd);</span>
+ }
+ break;
+ }
+
+<span class="fc" id="L607"> name = actName;</span>
+ }
+
+ // Multi-line name with a trailer
+<span class="pc bpc" id="L611" title="1 of 2 branches missed."> if (isMulti) {</span>
+<span class="nc" id="L612"> String tmp = readMultiLine(name, scn, ropts, errs, &quot;name&quot;, lno);</span>
+<span class="nc bnc" id="L613" title="All 2 branches missed."> if (tmp == null) return null;</span>
+<span class="nc" id="L614"> name = tmp;</span>
+ }
+ }
+
+<span class="fc" id="L618"> return name;</span>
+ }
+
+ private static void readGlobal(String nam, Scanner scn, List&lt;ReplError&gt; errs,
+ ReplOpts ropts, IntHolder lno, IntHolder pno) {
+<span class="fc" id="L623"> String name = nam.substring(3);</span>
+
+ // Split out each control
+<span class="fc" id="L626"> String[] bits = StringUtils.escapeSplit(&quot;|&quot;, &quot;;&quot;, name);</span>
+<span class="pc bpc" id="L627" title="1 of 2 branches missed."> if (ropts.isTrace) {</span>
+<span class="nc" id="L628"> ropts.errStream.printf(&quot;\t[TRACE] Split control bits are: \n&quot;);</span>
+<span class="nc bnc" id="L629" title="All 2 branches missed."> for (String bit : bits) {</span>
+<span class="nc" id="L630"> ropts.errStream.printf(&quot;%s, &quot;, bit);</span>
+ }
+<span class="nc" id="L632"> ropts.errStream.println();</span>
+ }
+<span class="fc bfc" id="L634" title="All 2 branches covered."> for (String bit : bits) {</span>
+<span class="fc" id="L635"> String bitHead = bit.toUpperCase();</span>
+<span class="fc" id="L636"> String bitBody = bit;</span>
+
+<span class="fc" id="L638"> String[] bots = StringUtils.escapeSplit(&quot;|&quot;, &quot;/&quot;, bit);</span>
+<span class="fc bfc" id="L639" title="All 2 branches covered."> if (bots.length &gt; 1) {</span>
+<span class="fc" id="L640"> bitHead = bots[0];</span>
+<span class="fc" id="L641"> bitBody = bots[1];</span>
+ }
+
+<span class="pc bpc" id="L644" title="13 of 18 branches missed."> switch (bitHead) {</span>
+ case &quot;PRIORITY&quot;:
+ case &quot;PRIOR&quot;:
+ case &quot;P&quot;:
+ try {
+<span class="fc" id="L649"> int tmp = Integer.parseInt(bitBody);</span>
+<span class="fc" id="L650"> ropts.defPrior = tmp;</span>
+<span class="nc" id="L651"> } catch (NumberFormatException nfex) {</span>
+<span class="nc" id="L652"> String errMsg = String.format(&quot;'%s' is not a valid priority (must be an integer)&quot;,</span>
+ bitBody);
+
+<span class="nc" id="L655"> errs.add(new ReplError(lno, pno, errMsg, name));</span>
+<span class="fc" id="L656"> }</span>
+<span class="nc" id="L657"> break;</span>
+ case &quot;STAGE&quot;:
+ case &quot;S&quot;:
+ try {
+<span class="fc" id="L661"> int tmpStage = Integer.parseInt(bitBody);</span>
+
+<span class="pc bpc" id="L663" title="1 of 2 branches missed."> if (tmpStage &lt; 0) {</span>
+<span class="nc" id="L664"> String errMsg = String.format(&quot;'%s' is not a valid stage (must be a positive integer)&quot;,</span>
+ bitBody);
+
+<span class="nc" id="L667"> errs.add(new ReplError(lno, pno, errMsg, name));</span>
+<span class="nc" id="L668"> break;</span>
+ }
+<span class="fc" id="L670"> ropts.defStage = tmpStage;</span>
+<span class="nc" id="L671"> } catch (NumberFormatException nfex) {</span>
+<span class="nc" id="L672"> String errMsg = String.format(&quot;'%s' is not a valid stage (must be a positive integer)&quot;,</span>
+ bitBody);
+
+<span class="nc" id="L675"> errs.add(new ReplError(lno, pno, errMsg, name));</span>
+<span class="fc" id="L676"> }</span>
+<span class="nc" id="L677"> break;</span>
+ case &quot;MULTITRUE&quot;:
+ case &quot;MULTIT&quot;:
+ case &quot;MT&quot;:
+<span class="nc" id="L681"> ropts.defMulti = true;</span>
+<span class="nc" id="L682"> break;</span>
+ case &quot;MULTIFALSE&quot;:
+ case &quot;MULTIF&quot;:
+ case &quot;MF&quot;:
+<span class="nc" id="L686"> ropts.defMulti = false;</span>
+<span class="nc" id="L687"> break;</span>
+ case &quot;MULTI&quot;:
+ case &quot;M&quot;:
+<span class="fc" id="L690"> ropts.defMulti = Boolean.parseBoolean(bitBody);</span>
+<span class="fc" id="L691"> break;</span>
+ case &quot;INTERNAL&quot;:
+ case &quot;INT&quot;:
+ case &quot;I&quot;:
+<span class="nc" id="L695"> ropts.defStatus = StageStatus.INTERNAL;</span>
+<span class="nc" id="L696"> break;</span>
+ case &quot;EXTERNAL&quot;:
+ case &quot;EXT&quot;:
+ case &quot;E&quot;:
+<span class="nc" id="L700"> ropts.defStatus = StageStatus.EXTERNAL;</span>
+<span class="nc" id="L701"> break;</span>
+ case &quot;BOTH&quot;:
+ case &quot;B&quot;:
+<span class="nc" id="L704"> ropts.defStatus = StageStatus.BOTH;</span>
+<span class="nc" id="L705"> break;</span>
+ case &quot;DEBUGTRUE&quot;:
+ case &quot;DEBUGT&quot;:
+ case &quot;DT&quot;:
+<span class="nc" id="L709"> ropts.isDebug = true;</span>
+<span class="nc" id="L710"> break;</span>
+ case &quot;DEBUGFALSE&quot;:
+ case &quot;DEBUGF&quot;:
+ case &quot;DF&quot;:
+<span class="fc" id="L714"> ropts.isDebug = false;</span>
+<span class="fc" id="L715"> break;</span>
+ case &quot;DEBUG&quot;:
+ case &quot;D&quot;:
+<span class="nc" id="L718"> ropts.isDebug = Boolean.parseBoolean(bitBody);</span>
+<span class="nc" id="L719"> break;</span>
+ case &quot;TRACETRUE&quot;:
+ case &quot;TRACET&quot;:
+ case &quot;TT&quot;:
+<span class="nc" id="L723"> ropts.isTrace = true;</span>
+<span class="nc" id="L724"> break;</span>
+ case &quot;TRACEFALSE&quot;:
+ case &quot;TRACEF&quot;:
+ case &quot;TF&quot;:
+<span class="fc" id="L728"> ropts.isTrace = false;</span>
+<span class="fc" id="L729"> break;</span>
+ case &quot;TRACE&quot;:
+ case &quot;T&quot;:
+<span class="nc" id="L732"> ropts.isTrace = Boolean.parseBoolean(bitBody);</span>
+<span class="nc" id="L733"> break;</span>
+ case &quot;PERFTRUE&quot;:
+ case &quot;PERFT&quot;:
+ case &quot;PRFT&quot;:
+<span class="nc" id="L737"> ropts.isPerf = true;</span>
+<span class="nc" id="L738"> break;</span>
+ case &quot;PERFFALSE&quot;:
+ case &quot;PERFF&quot;:
+ case &quot;PRFF&quot;:
+<span class="nc" id="L742"> ropts.isPerf = false;</span>
+<span class="nc" id="L743"> break;</span>
+ case &quot;PERF&quot;:
+ case &quot;PRF&quot;:
+<span class="nc" id="L746"> ropts.isPerf = Boolean.parseBoolean(bitBody);</span>
+<span class="nc" id="L747"> break;</span>
+ default:
+ {
+<span class="nc" id="L750"> String msg = String.format(&quot;Invalid global control name '%s'&quot;, bitHead);</span>
+<span class="nc" id="L751"> ReplError err = new ReplError(lno, pno, msg, name);</span>
+<span class="nc" id="L752"> errs.add(err);</span>
+ }
+ break;
+ }
+
+<span class="pc bpc" id="L757" title="1 of 2 branches missed."> if (ropts.isTrace) </span>
+<span class="nc" id="L758"> ropts.errStream.printf(&quot;\t[TRACE] Processed global control '%s':'%s'\n&quot;, </span>
+ bitHead, bitBody);
+ }
+
+<span class="fc" id="L762"> return;</span>
+ }
+
+ private static ControlledString getControls(String lne, List&lt;ReplError&gt; errs,
+ ReplOpts ropts, IntHolder lno, IntHolder pno, String type) {
+<span class="nc bnc" id="L767" title="All 2 branches missed."> if (!lne.startsWith(&quot;//&quot;)) {</span>
+<span class="nc" id="L768"> return new ControlledString(lne);</span>
+ }
+
+<span class="nc" id="L771"> String tmp = lne.substring(2);</span>
+
+<span class="nc" id="L773"> String[] bits = StringUtils.escapeSplit(&quot;|&quot;, &quot;//&quot;, lne);</span>
+
+<span class="nc bnc" id="L775" title="All 2 branches missed."> if (bits.length &lt; 2) {</span>
+<span class="nc" id="L776"> String msg = &quot;Did not find control terminator (//) in %s where it should be&quot;;</span>
+<span class="nc" id="L777"> msg = String.format(msg, type);</span>
+
+<span class="nc" id="L779"> ReplError re = new ReplError(lno, pno, msg, lne);</span>
+<span class="nc" id="L780"> errs.add(re);</span>
+
+<span class="nc" id="L782"> return null;</span>
+ }
+
+<span class="nc" id="L785"> ControlledString cs = new ControlledString(bits[0]);</span>
+
+<span class="nc" id="L787"> bits = StringUtils.escapeSplit(&quot;|&quot;, &quot;;&quot;, bits[1]);</span>
+
+<span class="nc" id="L789"> cs.controls = new Control[bits.length];</span>
+
+<span class="nc bnc" id="L791" title="All 2 branches missed."> for (int i = 0; i &lt; bits.length; i++) {</span>
+<span class="nc" id="L792"> String bit = bits[i];</span>
+
+<span class="nc" id="L794"> String[] bots = StringUtils.escapeSplit(&quot;|&quot;, &quot;/&quot;, bit);</span>
+
+<span class="nc" id="L796"> Control cont = new Control(bots[0]);</span>
+
+<span class="nc bnc" id="L798" title="All 2 branches missed."> if (cont.name.length() &gt; 1) {</span>
+<span class="nc" id="L799"> cont.name = cont.name.toUpperCase();</span>
+ }
+
+<span class="nc bnc" id="L802" title="All 2 branches missed."> if (bots.length &gt; 1) {</span>
+<span class="nc" id="L803"> cont.args = new String[bots.length - 1];</span>
+<span class="nc bnc" id="L804" title="All 2 branches missed."> for (int j = 1; j &lt; bots.length; j++) {</span>
+<span class="nc" id="L805"> cont.args[j - 1] = bots[j];</span>
+ }
+ }
+
+<span class="nc" id="L809"> cs.controls[i] = cont;</span>
+ }
+
+<span class="nc" id="L812"> return cs;</span>
+ }
+}
+</pre><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.2.201808211720</span></div></body></html> \ No newline at end of file
diff --git a/docs/jacoco-ut/bjc.everge/ReplParseException.html b/docs/jacoco-ut/bjc.everge/ReplParseException.html
new file mode 100644
index 0000000..db90db6
--- /dev/null
+++ b/docs/jacoco-ut/bjc.everge/ReplParseException.html
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>ReplParseException</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">everge</a> &gt; <a href="index.html" class="el_package">bjc.everge</a> &gt; <span class="el_class">ReplParseException</span></div><h1>ReplParseException</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">59 of 128</td><td class="ctr2">53%</td><td class="bar">6 of 12</td><td class="ctr2">50%</td><td class="ctr1">7</td><td class="ctr2">10</td><td class="ctr1">11</td><td class="ctr2">27</td><td class="ctr1">2</td><td class="ctr2">4</td></tr></tfoot><tbody><tr><td id="a3"><a href="ReplParseException.java.html#L22" class="el_method">toString()</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="39" height="10" title="28" alt="28"/></td><td class="ctr2" id="c2">0%</td><td class="bar" id="d1"><img src="../jacoco-resources/redbar.gif" width="24" height="10" title="2" alt="2"/></td><td class="ctr2" id="e1">0%</td><td class="ctr1" id="f1">2</td><td class="ctr2" id="g1">2</td><td class="ctr1" id="h1">4</td><td class="ctr2" id="i1">4</td><td class="ctr1" id="j0">1</td><td class="ctr2" id="k0">1</td></tr><tr><td id="a2"><a href="ReplParseException.java.html#L30" class="el_method">toPrintString()</a></td><td class="bar" id="b1"><img src="../jacoco-resources/redbar.gif" width="33" height="10" title="24" alt="24"/><img src="../jacoco-resources/greenbar.gif" width="86" height="10" title="62" alt="62"/></td><td class="ctr2" id="c1">72%</td><td class="bar" id="d0"><img src="../jacoco-resources/redbar.gif" width="48" height="10" title="4" alt="4"/><img src="../jacoco-resources/greenbar.gif" width="72" height="10" title="6" alt="6"/></td><td class="ctr2" id="e0">60%</td><td class="ctr1" id="f0">4</td><td class="ctr2" id="g0">6</td><td class="ctr1" id="h0">5</td><td class="ctr2" id="i0">18</td><td class="ctr1" id="j2">0</td><td class="ctr2" id="k1">1</td></tr><tr><td id="a0"><a href="ReplParseException.java.html#L10" class="el_method">ReplParseException(String)</a></td><td class="bar" id="b2"><img src="../jacoco-resources/redbar.gif" width="9" height="10" title="7" alt="7"/></td><td class="ctr2" id="c3">0%</td><td class="bar" id="d2"/><td class="ctr2" id="e2">n/a</td><td class="ctr1" id="f2">1</td><td class="ctr2" id="g2">1</td><td class="ctr1" id="h2">2</td><td class="ctr2" id="i3">2</td><td class="ctr1" id="j1">1</td><td class="ctr2" id="k2">1</td></tr><tr><td id="a1"><a href="ReplParseException.java.html#L14" class="el_method">ReplParseException(String, List)</a></td><td class="bar" id="b3"><img src="../jacoco-resources/greenbar.gif" width="9" height="10" title="7" alt="7"/></td><td class="ctr2" id="c0">100%</td><td class="bar" id="d3"/><td class="ctr2" id="e3">n/a</td><td class="ctr1" id="f3">0</td><td class="ctr2" id="g3">1</td><td class="ctr1" id="h3">0</td><td class="ctr2" id="i2">3</td><td class="ctr1" id="j3">0</td><td class="ctr2" id="k3">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.2.201808211720</span></div></body></html> \ No newline at end of file
diff --git a/docs/jacoco-ut/bjc.everge/ReplParseException.java.html b/docs/jacoco-ut/bjc.everge/ReplParseException.java.html
new file mode 100644
index 0000000..322ba21
--- /dev/null
+++ b/docs/jacoco-ut/bjc.everge/ReplParseException.java.html
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>ReplParseException.java</title><link rel="stylesheet" href="../jacoco-resources/prettify.css" type="text/css"/><script type="text/javascript" src="../jacoco-resources/prettify.js"></script></head><body onload="window['PR_TAB_WIDTH']=4;prettyPrint()"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">everge</a> &gt; <a href="index.source.html" class="el_package">bjc.everge</a> &gt; <span class="el_source">ReplParseException.java</span></div><h1>ReplParseException.java</h1><pre class="source lang-java linenums">package bjc.everge;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class ReplParseException extends RuntimeException {
+ public List&lt;ReplError&gt; errs;
+
+ public ReplParseException(String msg) {
+<span class="nc" id="L10"> this(msg, new ArrayList&lt;&gt;());</span>
+<span class="nc" id="L11"> }</span>
+
+ public ReplParseException(String msg, List&lt;ReplError&gt; errs) {
+<span class="fc" id="L14"> super(msg);</span>
+
+<span class="fc" id="L16"> this.errs = errs;</span>
+<span class="fc" id="L17"> }</span>
+
+ @Override
+ public String toString() {
+ String errString;
+<span class="nc bnc" id="L22" title="All 2 branches missed."> if (errs.size() == 0) errString = &quot;An error&quot;;</span>
+<span class="nc" id="L23"> else errString = &quot;Errors&quot;;</span>
+
+<span class="nc" id="L25"> return String.format(&quot;%s occured parsing replacement pairs: %s\n%s&quot;,</span>
+<span class="nc" id="L26"> errString, getMessage(), errs);</span>
+ }
+
+ public String toPrintString() {
+<span class="fc" id="L30"> StringBuilder errString = new StringBuilder(&quot;[ERROR] &quot;);</span>
+
+<span class="pc bpc" id="L32" title="1 of 2 branches missed."> if (errs.size() == 0) {</span>
+<span class="nc" id="L33"> errString.append(&quot;No specific errors&quot;);</span>
+<span class="pc bpc" id="L34" title="1 of 2 branches missed."> } else if (errs.size() == 1) {</span>
+<span class="fc" id="L35"> errString.append(&quot;An error&quot;);</span>
+ } else {
+<span class="nc" id="L37"> errString.append(errs.size());</span>
+<span class="nc" id="L38"> errString.append(&quot; errors&quot;);</span>
+ }
+
+<span class="fc" id="L41"> errString.append(&quot; occured parsing replacement pairs:&quot;);</span>
+<span class="pc bpc" id="L42" title="1 of 2 branches missed."> if (!getMessage().equals(&quot;&quot;)) {</span>
+<span class="nc" id="L43"> errString.append(&quot; &quot;);</span>
+<span class="nc" id="L44"> errString.append(getMessage());</span>
+ }
+
+<span class="pc bpc" id="L47" title="1 of 2 branches missed."> if (errs.size() &gt; 0) {</span>
+<span class="fc" id="L48"> errString.append(&quot;\n\t&quot;);</span>
+
+<span class="fc bfc" id="L50" title="All 2 branches covered."> for (ReplError err : errs) {</span>
+<span class="fc" id="L51"> errString.append(err.toPrintString(&quot;\t&quot;));</span>
+<span class="fc" id="L52"> errString.append(&quot;\n\t&quot;);</span>
+<span class="fc" id="L53"> }</span>
+ }
+
+<span class="fc" id="L56"> return errString.toString().trim();</span>
+ }
+}
+</pre><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.2.201808211720</span></div></body></html> \ No newline at end of file
diff --git a/docs/jacoco-ut/bjc.everge/ReplSet.html b/docs/jacoco-ut/bjc.everge/ReplSet.html
new file mode 100644
index 0000000..1edd220
--- /dev/null
+++ b/docs/jacoco-ut/bjc.everge/ReplSet.html
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>ReplSet</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">everge</a> &gt; <a href="index.html" class="el_package">bjc.everge</a> &gt; <span class="el_class">ReplSet</span></div><h1>ReplSet</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">105 of 105</td><td class="ctr2">0%</td><td class="bar">6 of 6</td><td class="ctr2">0%</td><td class="ctr1">9</td><td class="ctr2">9</td><td class="ctr1">24</td><td class="ctr2">24</td><td class="ctr1">6</td><td class="ctr2">6</td></tr></tfoot><tbody><tr><td id="a1"><a href="ReplSet.java.html#L71" class="el_method">addPairs(ReplPair[])</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="26" alt="26"/></td><td class="ctr2" id="c0">0%</td><td class="bar" id="d0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="2" alt="2"/></td><td class="ctr2" id="e0">0%</td><td class="ctr1" id="f0">2</td><td class="ctr2" id="g0">2</td><td class="ctr1" id="h2">4</td><td class="ctr2" id="i2">4</td><td class="ctr1" id="j0">1</td><td class="ctr2" id="k0">1</td></tr><tr><td id="a3"><a href="ReplSet.java.html#L40" class="el_method">fromFile(String)</a></td><td class="bar" id="b1"><img src="../jacoco-resources/redbar.gif" width="110" height="10" title="24" alt="24"/></td><td class="ctr2" id="c1">0%</td><td class="bar" id="d3"/><td class="ctr2" id="e3">n/a</td><td class="ctr1" id="f3">1</td><td class="ctr2" id="g3">1</td><td class="ctr1" id="h3">4</td><td class="ctr2" id="i3">4</td><td class="ctr1" id="j1">1</td><td class="ctr2" id="k1">1</td></tr><tr><td id="a0"><a href="ReplSet.java.html#L56" class="el_method">addPairs(List)</a></td><td class="bar" id="b2"><img src="../jacoco-resources/redbar.gif" width="96" height="10" title="21" alt="21"/></td><td class="ctr2" id="c2">0%</td><td class="bar" id="d1"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="2" alt="2"/></td><td class="ctr2" id="e1">0%</td><td class="ctr1" id="f1">2</td><td class="ctr2" id="g1">2</td><td class="ctr1" id="h0">5</td><td class="ctr2" id="i0">5</td><td class="ctr1" id="j2">1</td><td class="ctr2" id="k2">1</td></tr><tr><td id="a2"><a href="ReplSet.java.html#L88" class="el_method">apply(String)</a></td><td class="bar" id="b3"><img src="../jacoco-resources/redbar.gif" width="92" height="10" title="20" alt="20"/></td><td class="ctr2" id="c3">0%</td><td class="bar" id="d2"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="2" alt="2"/></td><td class="ctr2" id="e2">0%</td><td class="ctr1" id="f2">2</td><td class="ctr2" id="g2">2</td><td class="ctr1" id="h1">5</td><td class="ctr2" id="i1">5</td><td class="ctr1" id="j3">1</td><td class="ctr2" id="k3">1</td></tr><tr><td id="a4"><a href="ReplSet.java.html#L23" class="el_method">ReplSet()</a></td><td class="bar" id="b4"><img src="../jacoco-resources/redbar.gif" width="36" height="10" title="8" alt="8"/></td><td class="ctr2" id="c4">0%</td><td class="bar" id="d4"/><td class="ctr2" id="e4">n/a</td><td class="ctr1" id="f4">1</td><td class="ctr2" id="g4">1</td><td class="ctr1" id="h4">3</td><td class="ctr2" id="i4">3</td><td class="ctr1" id="j4">1</td><td class="ctr2" id="k4">1</td></tr><tr><td id="a5"><a href="ReplSet.java.html#L35" class="el_method">ReplSet(List)</a></td><td class="bar" id="b5"><img src="../jacoco-resources/redbar.gif" width="27" height="10" title="6" alt="6"/></td><td class="ctr2" id="c5">0%</td><td class="bar" id="d5"/><td class="ctr2" id="e5">n/a</td><td class="ctr1" id="f5">1</td><td class="ctr2" id="g5">1</td><td class="ctr1" id="h5">3</td><td class="ctr2" id="i5">3</td><td class="ctr1" id="j5">1</td><td class="ctr2" id="k5">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.2.201808211720</span></div></body></html> \ No newline at end of file
diff --git a/docs/jacoco-ut/bjc.everge/ReplSet.java.html b/docs/jacoco-ut/bjc.everge/ReplSet.java.html
new file mode 100644
index 0000000..f2f59a6
--- /dev/null
+++ b/docs/jacoco-ut/bjc.everge/ReplSet.java.html
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>ReplSet.java</title><link rel="stylesheet" href="../jacoco-resources/prettify.css" type="text/css"/><script type="text/javascript" src="../jacoco-resources/prettify.js"></script></head><body onload="window['PR_TAB_WIDTH']=4;prettyPrint()"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">everge</a> &gt; <a href="index.source.html" class="el_package">bjc.everge</a> &gt; <span class="el_source">ReplSet.java</span></div><h1>ReplSet.java</h1><pre class="source lang-java linenums">package bjc.everge;
+
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Scanner;
+
+/**
+ * A set of ReplPairs, kept together for easy use
+ *
+ * @author Ben Culkin
+ */
+public class ReplSet {
+ // The list of pairs
+ private List&lt;ReplPair&gt; parList;
+
+ /**
+ * Create a new blank set of pairs.
+ */
+<span class="nc" id="L23"> public ReplSet() {</span>
+<span class="nc" id="L24"> parList = new ArrayList&lt;&gt;();</span>
+<span class="nc" id="L25"> }</span>
+
+ /**
+ * Create a new set of pairs using an existing list of pairs.
+ *
+ * Changes to the list of pairs will carry across to the ReplSet, so be careful about that.
+ *
+ * @param lst
+ * The list of pairs to use.
+ */
+<span class="nc" id="L35"> public ReplSet(List&lt;ReplPair&gt; lst) {</span>
+<span class="nc" id="L36"> parList = lst;</span>
+<span class="nc" id="L37"> }</span>
+
+ public static ReplSet fromFile(String fName) throws IOException {
+<span class="nc" id="L40"> ReplSet rs = new ReplSet();</span>
+
+<span class="nc" id="L42"> try (FileInputStream fis = new FileInputStream(fName); Scanner scn = new Scanner(fis)) {</span>
+<span class="nc" id="L43"> rs.parList = ReplPair.readList(scn);</span>
+ }
+
+<span class="nc" id="L46"> return rs;</span>
+ }
+
+ /**
+ * Adds more pairs to the ReplSet.
+ *
+ * @param pars
+ * The pairs to add to the ReplSet.
+ */
+ public void addPairs(List&lt;ReplPair&gt; pars) {
+<span class="nc bnc" id="L56" title="All 2 branches missed."> for (ReplPair par : pars) {</span>
+<span class="nc" id="L57"> parList.add(par);</span>
+<span class="nc" id="L58"> }</span>
+
+ // Resort the pairs into priority order
+<span class="nc" id="L61"> parList.sort(null);</span>
+<span class="nc" id="L62"> }</span>
+
+ /**
+ * Adds more pairs to the ReplSet.
+ *
+ * @param pars
+ * The pairs to add to the ReplSet.
+ */
+ public void addPairs(ReplPair... pars) {
+<span class="nc bnc" id="L71" title="All 2 branches missed."> for (ReplPair par : pars) {</span>
+<span class="nc" id="L72"> parList.add(par);</span>
+ }
+
+ // Resort the pairs into priority order
+<span class="nc" id="L76"> parList.sort(null);</span>
+<span class="nc" id="L77"> }</span>
+
+ /**
+ * Apply the ReplSet to a string.
+ *
+ * @param val
+ * The string to apply the ReplSet to.
+ *
+ * @return The result of applying the ReplSet.
+ */
+ public String apply(String val) {
+<span class="nc" id="L88"> String ret = val;</span>
+
+<span class="nc bnc" id="L90" title="All 2 branches missed."> for (ReplPair par : parList) {</span>
+<span class="nc" id="L91"> ret = par.apply(ret);</span>
+<span class="nc" id="L92"> }</span>
+
+<span class="nc" id="L94"> return ret;</span>
+ }
+}
+</pre><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.2.201808211720</span></div></body></html> \ No newline at end of file
diff --git a/docs/jacoco-ut/bjc.everge/StageStatus.html b/docs/jacoco-ut/bjc.everge/StageStatus.html
new file mode 100644
index 0000000..743ca89
--- /dev/null
+++ b/docs/jacoco-ut/bjc.everge/StageStatus.html
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>StageStatus</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">everge</a> &gt; <a href="index.html" class="el_package">bjc.everge</a> &gt; <span class="el_class">StageStatus</span></div><h1>StageStatus</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">0 of 34</td><td class="ctr2">100%</td><td class="bar">0 of 0</td><td class="ctr2">n/a</td><td class="ctr1">0</td><td class="ctr2">1</td><td class="ctr1">0</td><td class="ctr2">4</td><td class="ctr1">0</td><td class="ctr2">1</td></tr></tfoot><tbody><tr><td id="a0"><a href="StageStatus.java.html#L7" class="el_method">static {...}</a></td><td class="bar" id="b0"><img src="../jacoco-resources/greenbar.gif" width="120" height="10" title="34" alt="34"/></td><td class="ctr2" id="c0">100%</td><td class="bar" id="d0"/><td class="ctr2" id="e0">n/a</td><td class="ctr1" id="f0">0</td><td class="ctr2" id="g0">1</td><td class="ctr1" id="h0">0</td><td class="ctr2" id="i0">4</td><td class="ctr1" id="j0">0</td><td class="ctr2" id="k0">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.2.201808211720</span></div></body></html> \ No newline at end of file
diff --git a/docs/jacoco-ut/bjc.everge/StageStatus.java.html b/docs/jacoco-ut/bjc.everge/StageStatus.java.html
new file mode 100644
index 0000000..343fd08
--- /dev/null
+++ b/docs/jacoco-ut/bjc.everge/StageStatus.java.html
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>StageStatus.java</title><link rel="stylesheet" href="../jacoco-resources/prettify.css" type="text/css"/><script type="text/javascript" src="../jacoco-resources/prettify.js"></script></head><body onload="window['PR_TAB_WIDTH']=4;prettyPrint()"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">everge</a> &gt; <a href="index.source.html" class="el_package">bjc.everge</a> &gt; <span class="el_source">StageStatus.java</span></div><h1>StageStatus.java</h1><pre class="source lang-java linenums">package bjc.everge;
+
+/**
+ * Possible statuses of pairs with respect to exporting.
+ * @author Ben Culkin
+ */
+<span class="fc" id="L7">public enum StageStatus {</span>
+ /**
+ * Only use for staging pairs; don't export.
+ */
+<span class="fc" id="L11"> INTERNAL,</span>
+ /**
+ * Don't use for staging pairs; do export.
+ */
+<span class="fc" id="L15"> EXTERNAL,</span>
+ /**
+ * Use for staging pairs; do export.
+ */
+<span class="fc" id="L19"> BOTH;</span>
+}
+
+</pre><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.2.201808211720</span></div></body></html> \ No newline at end of file
diff --git a/docs/jacoco-ut/bjc.everge/StringUtils.html b/docs/jacoco-ut/bjc.everge/StringUtils.html
new file mode 100644
index 0000000..e21d36f
--- /dev/null
+++ b/docs/jacoco-ut/bjc.everge/StringUtils.html
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>StringUtils</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">everge</a> &gt; <a href="index.html" class="el_package">bjc.everge</a> &gt; <span class="el_class">StringUtils</span></div><h1>StringUtils</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">190 of 460</td><td class="ctr2">58%</td><td class="bar">17 of 54</td><td class="ctr2">68%</td><td class="ctr1">16</td><td class="ctr2">30</td><td class="ctr1">24</td><td class="ctr2">80</td><td class="ctr1">1</td><td class="ctr2">3</td></tr></tfoot><tbody><tr><td id="a0"><a href="StringUtils.java.html#L34" class="el_method">escapeSplit(String, String, String)</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="49" height="10" title="187" alt="187"/><img src="../jacoco-resources/greenbar.gif" width="70" height="10" title="267" alt="267"/></td><td class="ctr2" id="c1">58%</td><td class="bar" id="d0"><img src="../jacoco-resources/redbar.gif" width="37" height="10" title="17" alt="17"/><img src="../jacoco-resources/greenbar.gif" width="82" height="10" title="37" alt="37"/></td><td class="ctr2" id="e0">68%</td><td class="ctr1" id="f0">15</td><td class="ctr2" id="g0">28</td><td class="ctr1" id="h0">23</td><td class="ctr2" id="i0">78</td><td class="ctr1" id="j1">0</td><td class="ctr2" id="k0">1</td></tr><tr><td id="a2"><a href="StringUtils.java.html#L14" class="el_method">StringUtils()</a></td><td class="bar" id="b1"/><td class="ctr2" id="c2">0%</td><td class="bar" id="d1"/><td class="ctr2" id="e1">n/a</td><td class="ctr1" id="f1">1</td><td class="ctr2" id="g1">1</td><td class="ctr1" id="h1">1</td><td class="ctr2" id="i1">1</td><td class="ctr1" id="j0">1</td><td class="ctr2" id="k1">1</td></tr><tr><td id="a1"><a href="StringUtils.java.html#L15" class="el_method">static {...}</a></td><td class="bar" id="b2"/><td class="ctr2" id="c0">100%</td><td class="bar" id="d2"/><td class="ctr2" id="e2">n/a</td><td class="ctr1" id="f2">0</td><td class="ctr2" id="g2">1</td><td class="ctr1" id="h2">0</td><td class="ctr2" id="i2">1</td><td class="ctr1" id="j2">0</td><td class="ctr2" id="k2">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.2.201808211720</span></div></body></html> \ No newline at end of file
diff --git a/docs/jacoco-ut/bjc.everge/StringUtils.java.html b/docs/jacoco-ut/bjc.everge/StringUtils.java.html
new file mode 100644
index 0000000..f1f94d2
--- /dev/null
+++ b/docs/jacoco-ut/bjc.everge/StringUtils.java.html
@@ -0,0 +1,194 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>StringUtils.java</title><link rel="stylesheet" href="../jacoco-resources/prettify.css" type="text/css"/><script type="text/javascript" src="../jacoco-resources/prettify.js"></script></head><body onload="window['PR_TAB_WIDTH']=4;prettyPrint()"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">everge</a> &gt; <a href="index.source.html" class="el_package">bjc.everge</a> &gt; <span class="el_source">StringUtils.java</span></div><h1>StringUtils.java</h1><pre class="source lang-java linenums">package bjc.everge;
+
+import java.util.Arrays;
+import java.util.ArrayList;
+import java.util.List;
+
+import java.util.regex.Pattern;
+
+/**
+ * Utility methods for strings.
+ *
+ * @author Ben Culkin.
+ */
+<span class="nc" id="L14">public class StringUtils {</span>
+<span class="fc" id="L15"> public static boolean isDebug = false;</span>
+
+ /**
+ * Split a string on every occurance of a string not preceeded by an escape.
+ *
+ * @param escape
+ * The escape that stops splitting.
+ * @param splat
+ * The string to split on. If this starts with the escape sequence, things will work
+ * poorly.
+ * @param inp
+ * The string to split.
+ * @return The string split as specified above.
+ */
+ public static String[] escapeSplit(String escape, String splat, String inp) {
+
+ /*
+ * Special case some stuffs.
+ */
+<span class="pc bpc" id="L34" title="2 of 4 branches missed."> if (inp == null || inp.equals(&quot;&quot;)) {</span>
+ // No input
+<span class="nc" id="L36"> return new String[] {inp};</span>
+ }
+
+<span class="fc bfc" id="L39" title="All 2 branches covered."> if (!inp.contains(splat)) {</span>
+ // Input does not contain any delimiters
+<span class="fc" id="L41"> return new String[] {inp};</span>
+ }
+
+<span class="pc bpc" id="L44" title="1 of 4 branches missed."> if (escape == null || escape.equals(&quot;&quot;)) {</span>
+ // No escape, so we can just split normally
+<span class="fc" id="L46"> return inp.split(Pattern.quote(splat));</span>
+ }
+
+<span class="fc" id="L49"> List&lt;String&gt; ret = new ArrayList&lt;&gt;();</span>
+
+<span class="fc" id="L51"> String wrk = inp;</span>
+<span class="fc" id="L52"> int sidx = wrk.indexOf(splat);</span>
+<span class="fc" id="L53"> int eidx = wrk.indexOf(escape);</span>
+
+<span class="fc" id="L55"> boolean hadEscape = false;</span>
+
+<span class="fc bfc" id="L57" title="All 4 branches covered."> while (sidx != -1 || eidx != -1) {</span>
+<span class="fc bfc" id="L58" title="All 4 branches covered."> if (eidx &gt; 0 &amp;&amp; eidx &lt; sidx) {</span>
+<span class="pc bpc" id="L59" title="1 of 2 branches missed."> if (isDebug) System.err.printf(&quot;[TRACE] Considering escape\n&quot;);</span>
+
+ /*
+ * We potentially have an escaped sequence:
+ * - either an escaped split
+ * - or an escaped escape
+ */
+ // Check for an escaped split
+<span class="fc bfc" id="L67" title="All 2 branches covered."> if (wrk.regionMatches(eidx + escape.length(), splat, 0, splat.length())) {</span>
+ // Skip over it
+<span class="fc" id="L69"> int ofst = eidx + splat.length();</span>
+
+ // Slice out the escape
+ {
+<span class="fc" id="L73"> String s1 = wrk.substring(0, eidx);</span>
+<span class="fc" id="L74"> String s2 = wrk.substring(eidx + escape.length());</span>
+
+<span class="fc" id="L76"> String s3 = wrk.substring(eidx, eidx + escape.length());</span>
+
+<span class="pc bpc" id="L78" title="1 of 2 branches missed."> if (isDebug) {</span>
+<span class="nc" id="L79"> System.err.printf(&quot;[TRACE] Skip esc. split (%s)/(%s); (%s)\n&quot;,</span>
+ s1, s2, s3);
+ }
+
+<span class="fc" id="L83"> wrk = s1 + s2;</span>
+ }
+
+<span class="fc" id="L86"> sidx = wrk.indexOf(splat, ofst);</span>
+<span class="fc" id="L87"> eidx = wrk.indexOf(escape, ofst);</span>
+
+<span class="pc bpc" id="L89" title="1 of 2 branches missed."> if (isDebug) {</span>
+<span class="nc" id="L90"> System.err.printf(&quot;[TRACE] After esc. split (%s) %d/%d\n&quot;,</span>
+<span class="nc" id="L91"> wrk, sidx, eidx);</span>
+ }
+
+<span class="fc" id="L94"> hadEscape = false;</span>
+<span class="fc" id="L95"> continue;</span>
+ }
+
+ // Check for an escaped escape
+<span class="pc bpc" id="L99" title="1 of 2 branches missed."> if (wrk.regionMatches(eidx + escape.length(), escape, 0, escape.length())) {</span>
+ // Skip over it
+<span class="fc" id="L101"> int ofst = eidx + escape.length();</span>
+
+ // Slice out the escape
+ {
+<span class="fc" id="L105"> String s1 = wrk.substring(0, eidx);</span>
+<span class="fc" id="L106"> String s2 = wrk.substring(eidx + escape.length());</span>
+
+<span class="fc" id="L108"> String s3 = wrk.substring(eidx, eidx + escape.length());</span>
+<span class="pc bpc" id="L109" title="1 of 2 branches missed."> if (isDebug) {</span>
+<span class="nc" id="L110"> System.err.printf(&quot;[TRACE] Skip esc. escape (%s)/(%s); (%s)\n&quot;,</span>
+ s1, s2, s3);
+ }
+
+<span class="fc" id="L114"> wrk = s1 + s2;</span>
+ }
+
+<span class="fc" id="L117"> sidx = wrk.indexOf(splat, ofst);</span>
+<span class="fc" id="L118"> eidx = wrk.indexOf(escape, ofst);</span>
+
+<span class="pc bpc" id="L120" title="1 of 2 branches missed."> if (isDebug) {</span>
+<span class="nc" id="L121"> System.err.printf(&quot;[TRACE] After esc. escape (%s)/(%s) %d/%d\n&quot;,</span>
+<span class="nc" id="L122"> wrk, wrk.substring(ofst), sidx, eidx);</span>
+ }
+
+<span class="fc" id="L125"> hadEscape = true;</span>
+<span class="fc" id="L126"> continue;</span>
+ }
+ }
+
+<span class="fc" id="L130"> boolean hasEscape = false;</span>
+
+ {
+<span class="fc" id="L133"> boolean tmp = wrk.regionMatches(sidx - escape.length(), escape, 0, escape.length());</span>
+
+<span class="fc bfc" id="L135" title="All 2 branches covered."> hasEscape = hadEscape ? false : tmp;</span>
+ }
+
+<span class="pc bpc" id="L138" title="1 of 4 branches missed."> while (sidx != -1 &amp;&amp; hasEscape) {</span>
+<span class="nc" id="L139"> int oidx = wrk.indexOf(splat, sidx + escape.length());</span>
+
+<span class="nc bnc" id="L141" title="All 2 branches missed."> if (isDebug) {</span>
+<span class="nc" id="L142"> String s1 = wrk.substring(0, sidx);</span>
+<span class="nc" id="L143"> String s2 = wrk.substring(sidx, sidx + escape.length());</span>
+<span class="nc" id="L144"> String s3 = wrk.substring(sidx + escape.length());</span>
+ }
+
+<span class="nc bnc" id="L147" title="All 2 branches missed."> if (oidx == -1) break;</span>
+
+ {
+<span class="nc" id="L150"> String s1 = wrk.substring(0, oidx);</span>
+<span class="nc" id="L151"> String s2 = wrk.substring(oidx + escape.length());</span>
+
+<span class="nc" id="L153"> wrk = s1 + s2;</span>
+ }
+
+<span class="nc" id="L156"> sidx = oidx;</span>
+
+<span class="nc" id="L158"> hasEscape = wrk.regionMatches(sidx - escape.length(), escape, 0, escape.length());</span>
+<span class="nc" id="L159"> }</span>
+
+<span class="fc bfc" id="L161" title="All 2 branches covered."> if (sidx == -1) {</span>
+<span class="fc" id="L162"> break;</span>
+ }
+
+<span class="fc" id="L165"> String tmp = wrk.substring(0, sidx);</span>
+
+<span class="pc bpc" id="L167" title="1 of 2 branches missed."> if (isDebug) {</span>
+<span class="nc" id="L168"> System.err.printf(&quot;[TRACE] Adding (%s) to returned splits; (%s)\n&quot;,</span>
+<span class="nc" id="L169"> tmp, wrk.substring(sidx));</span>
+ }
+
+<span class="fc" id="L172"> ret.add(tmp);</span>
+<span class="pc bpc" id="L173" title="1 of 4 branches missed."> if (!tmp.equals(&quot;&quot;) &amp;&amp; wrk.endsWith(tmp)) {</span>
+<span class="nc" id="L174"> wrk = &quot;&quot;;</span>
+ } else {
+<span class="pc bpc" id="L176" title="1 of 2 branches missed."> if (wrk.indexOf(splat, sidx) != -1) {</span>
+<span class="fc" id="L177"> wrk = wrk.substring(sidx + splat.length());</span>
+ } else {
+<span class="nc" id="L179"> wrk = wrk.substring(sidx);</span>
+ }
+ }
+
+<span class="fc" id="L183"> sidx = wrk.indexOf(splat);</span>
+<span class="fc" id="L184"> eidx = wrk.indexOf(escape);</span>
+
+<span class="fc" id="L186"> hadEscape = false;</span>
+<span class="fc" id="L187"> }</span>
+
+<span class="fc bfc" id="L189" title="All 2 branches covered."> if (!wrk.equals(&quot;&quot;)) ret.add(wrk);</span>
+
+<span class="fc" id="L191"> return ret.toArray(new String[0]);</span>
+ }
+}
+</pre><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.2.201808211720</span></div></body></html> \ No newline at end of file
diff --git a/docs/jacoco-ut/bjc.everge/index.html b/docs/jacoco-ut/bjc.everge/index.html
new file mode 100644
index 0000000..c22add6
--- /dev/null
+++ b/docs/jacoco-ut/bjc.everge/index.html
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>bjc.everge</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb', 'coveragetable'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="index.source.html" class="el_source">Source Files</a><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">everge</a> &gt; <span class="el_package">bjc.everge</span></div><h1>bjc.everge</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td><td class="sortable ctr1" id="l" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="m" onclick="toggleSort(this)">Classes</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">2,013 of 3,673</td><td class="ctr2">45%</td><td class="bar">209 of 381</td><td class="ctr2">45%</td><td class="ctr1">179</td><td class="ctr2">270</td><td class="ctr1">388</td><td class="ctr2">769</td><td class="ctr1">26</td><td class="ctr2">61</td><td class="ctr1">3</td><td class="ctr2">12</td></tr></tfoot><tbody><tr><td id="a7"><a href="ReplPair.html" class="el_class">ReplPair</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="59" height="10" title="800" alt="800"/><img src="../jacoco-resources/greenbar.gif" width="60" height="10" title="822" alt="822"/></td><td class="ctr2" id="c5">50%</td><td class="bar" id="d0"><img src="../jacoco-resources/redbar.gif" width="56" height="10" title="87" alt="87"/><img src="../jacoco-resources/greenbar.gif" width="63" height="10" title="99" alt="99"/></td><td class="ctr2" id="e1">53%</td><td class="ctr1" id="f0">73</td><td class="ctr2" id="g0">123</td><td class="ctr1" id="h0">138</td><td class="ctr2" id="i0">336</td><td class="ctr1" id="j3">2</td><td class="ctr2" id="k0">17</td><td class="ctr1" id="l3">0</td><td class="ctr2" id="m0">1</td></tr><tr><td id="a2"><a href="Everge.html" class="el_class">Everge</a></td><td class="bar" id="b1"><img src="../jacoco-resources/redbar.gif" width="39" height="10" title="534" alt="534"/><img src="../jacoco-resources/greenbar.gif" width="23" height="10" title="319" alt="319"/></td><td class="ctr2" id="c7">37%</td><td class="bar" id="d1"><img src="../jacoco-resources/redbar.gif" width="34" height="10" title="54" alt="54"/><img src="../jacoco-resources/greenbar.gif" width="18" height="10" title="29" alt="29"/></td><td class="ctr2" id="e3">34%</td><td class="ctr1" id="f1">41</td><td class="ctr2" id="g1">55</td><td class="ctr1" id="h1">124</td><td class="ctr2" id="i1">199</td><td class="ctr1" id="j4">2</td><td class="ctr2" id="k1">8</td><td class="ctr1" id="l4">0</td><td class="ctr2" id="m1">1</td></tr><tr><td id="a11"><a href="StringUtils.html" class="el_class">StringUtils</a></td><td class="bar" id="b2"><img src="../jacoco-resources/redbar.gif" width="14" height="10" title="190" alt="190"/><img src="../jacoco-resources/greenbar.gif" width="19" height="10" title="270" alt="270"/></td><td class="ctr2" id="c3">58%</td><td class="bar" id="d3"><img src="../jacoco-resources/redbar.gif" width="10" height="10" title="17" alt="17"/><img src="../jacoco-resources/greenbar.gif" width="23" height="10" title="37" alt="37"/></td><td class="ctr2" id="e0">68%</td><td class="ctr1" id="f2">16</td><td class="ctr2" id="g2">30</td><td class="ctr1" id="h3">24</td><td class="ctr2" id="i2">80</td><td class="ctr1" id="j8">1</td><td class="ctr2" id="k7">3</td><td class="ctr1" id="l5">0</td><td class="ctr2" id="m2">1</td></tr><tr><td id="a0"><a href="ControlledString.html" class="el_class">ControlledString</a></td><td class="bar" id="b3"><img src="../jacoco-resources/redbar.gif" width="11" height="10" title="159" alt="159"/></td><td class="ctr2" id="c9">0%</td><td class="bar" id="d4"><img src="../jacoco-resources/redbar.gif" width="9" height="10" title="14" alt="14"/></td><td class="ctr2" id="e5">0%</td><td class="ctr1" id="f3">12</td><td class="ctr2" id="g3">12</td><td class="ctr1" id="h2">35</td><td class="ctr2" id="i3">35</td><td class="ctr1" id="j1">5</td><td class="ctr2" id="k4">5</td><td class="ctr1" id="l0">1</td><td class="ctr2" id="m3">1</td></tr><tr><td id="a9"><a href="ReplSet.html" class="el_class">ReplSet</a></td><td class="bar" id="b4"><img src="../jacoco-resources/redbar.gif" width="7" height="10" title="105" alt="105"/></td><td class="ctr2" id="c10">0%</td><td class="bar" id="d7"><img src="../jacoco-resources/redbar.gif" width="3" height="10" title="6" alt="6"/></td><td class="ctr2" id="e6">0%</td><td class="ctr1" id="f5">9</td><td class="ctr2" id="g6">9</td><td class="ctr1" id="h4">24</td><td class="ctr2" id="i5">24</td><td class="ctr1" id="j0">6</td><td class="ctr2" id="k2">6</td><td class="ctr1" id="l1">1</td><td class="ctr2" id="m4">1</td></tr><tr><td id="a5"><a href="ReplError.html" class="el_class">ReplError</a></td><td class="bar" id="b5"><img src="../jacoco-resources/redbar.gif" width="5" height="10" title="72" alt="72"/><img src="../jacoco-resources/greenbar.gif" width="4" height="10" title="60" alt="60"/></td><td class="ctr2" id="c6">45%</td><td class="bar" id="d5"><img src="../jacoco-resources/redbar.gif" width="4" height="10" title="7" alt="7"/></td><td class="ctr2" id="e4">12%</td><td class="ctr1" id="f7">6</td><td class="ctr2" id="g7">9</td><td class="ctr1" id="h8">7</td><td class="ctr2" id="i7">18</td><td class="ctr1" id="j5">2</td><td class="ctr2" id="k5">5</td><td class="ctr1" id="l6">0</td><td class="ctr2" id="m5">1</td></tr><tr><td id="a6"><a href="ReplOpts.html" class="el_class">ReplOpts</a></td><td class="bar" id="b6"><img src="../jacoco-resources/redbar.gif" width="4" height="10" title="66" alt="66"/><img src="../jacoco-resources/greenbar.gif" width="2" height="10" title="30" alt="30"/></td><td class="ctr2" id="c8">31%</td><td class="bar" id="d2"><img src="../jacoco-resources/redbar.gif" width="11" height="10" title="18" alt="18"/></td><td class="ctr2" id="e7">0%</td><td class="ctr1" id="f4">10</td><td class="ctr2" id="g4">11</td><td class="ctr1" id="h5">11</td><td class="ctr2" id="i6">21</td><td class="ctr1" id="j9">1</td><td class="ctr2" id="k9">2</td><td class="ctr1" id="l7">0</td><td class="ctr2" id="m6">1</td></tr><tr><td id="a8"><a href="ReplParseException.html" class="el_class">ReplParseException</a></td><td class="bar" id="b7"><img src="../jacoco-resources/redbar.gif" width="4" height="10" title="59" alt="59"/><img src="../jacoco-resources/greenbar.gif" width="5" height="10" title="69" alt="69"/></td><td class="ctr2" id="c4">53%</td><td class="bar" id="d6"><img src="../jacoco-resources/redbar.gif" width="3" height="10" title="6" alt="6"/><img src="../jacoco-resources/greenbar.gif" width="3" height="10" title="6" alt="6"/></td><td class="ctr2" id="e2">50%</td><td class="ctr1" id="f6">7</td><td class="ctr2" id="g5">10</td><td class="ctr1" id="h6">11</td><td class="ctr2" id="i4">27</td><td class="ctr1" id="j6">2</td><td class="ctr2" id="k6">4</td><td class="ctr1" id="l8">0</td><td class="ctr2" id="m7">1</td></tr><tr><td id="a1"><a href="ControlledString$Control.html" class="el_class">ControlledString.Control</a></td><td class="bar" id="b8"><img src="../jacoco-resources/redbar.gif" width="1" height="10" title="18" alt="18"/></td><td class="ctr2" id="c11">0%</td><td class="bar" id="d8"/><td class="ctr2" id="e8">n/a</td><td class="ctr1" id="f8">3</td><td class="ctr2" id="g9">3</td><td class="ctr1" id="h7">9</td><td class="ctr2" id="i9">9</td><td class="ctr1" id="j2">3</td><td class="ctr2" id="k8">3</td><td class="ctr1" id="l2">1</td><td class="ctr2" id="m8">1</td></tr><tr><td id="a4"><a href="IntHolder.html" class="el_class">IntHolder</a></td><td class="bar" id="b9"><img src="../jacoco-resources/greenbar.gif" width="1" height="10" title="22" alt="22"/></td><td class="ctr2" id="c2">68%</td><td class="bar" id="d9"/><td class="ctr2" id="e9">n/a</td><td class="ctr1" id="f9">2</td><td class="ctr2" id="g8">6</td><td class="ctr1" id="h9">5</td><td class="ctr2" id="i8">12</td><td class="ctr1" id="j7">2</td><td class="ctr2" id="k3">6</td><td class="ctr1" id="l9">0</td><td class="ctr2" id="m9">1</td></tr><tr><td id="a3"><a href="Everge$InputStatus.html" class="el_class">Everge.InputStatus</a></td><td class="bar" id="b10"><img src="../jacoco-resources/greenbar.gif" width="2" height="10" title="34" alt="34"/></td><td class="ctr2" id="c0">100%</td><td class="bar" id="d10"/><td class="ctr2" id="e10">n/a</td><td class="ctr1" id="f10">0</td><td class="ctr2" id="g10">1</td><td class="ctr1" id="h10">0</td><td class="ctr2" id="i10">4</td><td class="ctr1" id="j10">0</td><td class="ctr2" id="k10">1</td><td class="ctr1" id="l10">0</td><td class="ctr2" id="m10">1</td></tr><tr><td id="a10"><a href="StageStatus.html" class="el_class">StageStatus</a></td><td class="bar" id="b11"><img src="../jacoco-resources/greenbar.gif" width="2" height="10" title="34" alt="34"/></td><td class="ctr2" id="c1">100%</td><td class="bar" id="d11"/><td class="ctr2" id="e11">n/a</td><td class="ctr1" id="f11">0</td><td class="ctr2" id="g11">1</td><td class="ctr1" id="h11">0</td><td class="ctr2" id="i11">4</td><td class="ctr1" id="j11">0</td><td class="ctr2" id="k11">1</td><td class="ctr1" id="l11">0</td><td class="ctr2" id="m11">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.2.201808211720</span></div></body></html> \ No newline at end of file
diff --git a/docs/jacoco-ut/bjc.everge/index.source.html b/docs/jacoco-ut/bjc.everge/index.source.html
new file mode 100644
index 0000000..0b57023
--- /dev/null
+++ b/docs/jacoco-ut/bjc.everge/index.source.html
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>bjc.everge</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb', 'coveragetable'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="index.html" class="el_class">Classes</a><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">everge</a> &gt; <span class="el_package">bjc.everge</span></div><h1>bjc.everge</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td><td class="sortable ctr1" id="l" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="m" onclick="toggleSort(this)">Classes</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">2,013 of 3,673</td><td class="ctr2">45%</td><td class="bar">209 of 381</td><td class="ctr2">45%</td><td class="ctr1">179</td><td class="ctr2">270</td><td class="ctr1">388</td><td class="ctr2">769</td><td class="ctr1">26</td><td class="ctr2">61</td><td class="ctr1">3</td><td class="ctr2">12</td></tr></tfoot><tbody><tr><td id="a5"><a href="ReplPair.java.html" class="el_source">ReplPair.java</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="59" height="10" title="800" alt="800"/><img src="../jacoco-resources/greenbar.gif" width="60" height="10" title="822" alt="822"/></td><td class="ctr2" id="c4">50%</td><td class="bar" id="d0"><img src="../jacoco-resources/redbar.gif" width="56" height="10" title="87" alt="87"/><img src="../jacoco-resources/greenbar.gif" width="63" height="10" title="99" alt="99"/></td><td class="ctr2" id="e1">53%</td><td class="ctr1" id="f0">73</td><td class="ctr2" id="g0">123</td><td class="ctr1" id="h0">138</td><td class="ctr2" id="i0">336</td><td class="ctr1" id="j2">2</td><td class="ctr2" id="k0">17</td><td class="ctr1" id="l2">0</td><td class="ctr2" id="m2">1</td></tr><tr><td id="a1"><a href="Everge.java.html" class="el_source">Everge.java</a></td><td class="bar" id="b1"><img src="../jacoco-resources/redbar.gif" width="39" height="10" title="534" alt="534"/><img src="../jacoco-resources/greenbar.gif" width="26" height="10" title="353" alt="353"/></td><td class="ctr2" id="c6">39%</td><td class="bar" id="d1"><img src="../jacoco-resources/redbar.gif" width="34" height="10" title="54" alt="54"/><img src="../jacoco-resources/greenbar.gif" width="18" height="10" title="29" alt="29"/></td><td class="ctr2" id="e3">34%</td><td class="ctr1" id="f1">41</td><td class="ctr2" id="g1">56</td><td class="ctr1" id="h1">124</td><td class="ctr2" id="i1">203</td><td class="ctr1" id="j3">2</td><td class="ctr2" id="k1">9</td><td class="ctr1" id="l3">0</td><td class="ctr2" id="m0">2</td></tr><tr><td id="a9"><a href="StringUtils.java.html" class="el_source">StringUtils.java</a></td><td class="bar" id="b2"><img src="../jacoco-resources/redbar.gif" width="14" height="10" title="190" alt="190"/><img src="../jacoco-resources/greenbar.gif" width="19" height="10" title="270" alt="270"/></td><td class="ctr2" id="c2">58%</td><td class="bar" id="d3"><img src="../jacoco-resources/redbar.gif" width="10" height="10" title="17" alt="17"/><img src="../jacoco-resources/greenbar.gif" width="23" height="10" title="37" alt="37"/></td><td class="ctr2" id="e0">68%</td><td class="ctr1" id="f2">16</td><td class="ctr2" id="g2">30</td><td class="ctr1" id="h3">24</td><td class="ctr2" id="i2">80</td><td class="ctr1" id="j7">1</td><td class="ctr2" id="k7">3</td><td class="ctr1" id="l4">0</td><td class="ctr2" id="m3">1</td></tr><tr><td id="a0"><a href="ControlledString.java.html" class="el_source">ControlledString.java</a></td><td class="bar" id="b3"><img src="../jacoco-resources/redbar.gif" width="13" height="10" title="177" alt="177"/></td><td class="ctr2" id="c8">0%</td><td class="bar" id="d4"><img src="../jacoco-resources/redbar.gif" width="9" height="10" title="14" alt="14"/></td><td class="ctr2" id="e5">0%</td><td class="ctr1" id="f3">15</td><td class="ctr2" id="g3">15</td><td class="ctr1" id="h2">44</td><td class="ctr2" id="i3">44</td><td class="ctr1" id="j0">8</td><td class="ctr2" id="k2">8</td><td class="ctr1" id="l0">2</td><td class="ctr2" id="m1">2</td></tr><tr><td id="a7"><a href="ReplSet.java.html" class="el_source">ReplSet.java</a></td><td class="bar" id="b4"><img src="../jacoco-resources/redbar.gif" width="7" height="10" title="105" alt="105"/></td><td class="ctr2" id="c9">0%</td><td class="bar" id="d7"><img src="../jacoco-resources/redbar.gif" width="3" height="10" title="6" alt="6"/></td><td class="ctr2" id="e6">0%</td><td class="ctr1" id="f5">9</td><td class="ctr2" id="g6">9</td><td class="ctr1" id="h4">24</td><td class="ctr2" id="i5">24</td><td class="ctr1" id="j1">6</td><td class="ctr2" id="k3">6</td><td class="ctr1" id="l1">1</td><td class="ctr2" id="m4">1</td></tr><tr><td id="a3"><a href="ReplError.java.html" class="el_source">ReplError.java</a></td><td class="bar" id="b5"><img src="../jacoco-resources/redbar.gif" width="5" height="10" title="72" alt="72"/><img src="../jacoco-resources/greenbar.gif" width="4" height="10" title="60" alt="60"/></td><td class="ctr2" id="c5">45%</td><td class="bar" id="d5"><img src="../jacoco-resources/redbar.gif" width="4" height="10" title="7" alt="7"/></td><td class="ctr2" id="e4">12%</td><td class="ctr1" id="f7">6</td><td class="ctr2" id="g7">9</td><td class="ctr1" id="h7">7</td><td class="ctr2" id="i7">18</td><td class="ctr1" id="j4">2</td><td class="ctr2" id="k5">5</td><td class="ctr1" id="l5">0</td><td class="ctr2" id="m5">1</td></tr><tr><td id="a4"><a href="ReplOpts.java.html" class="el_source">ReplOpts.java</a></td><td class="bar" id="b6"><img src="../jacoco-resources/redbar.gif" width="4" height="10" title="66" alt="66"/><img src="../jacoco-resources/greenbar.gif" width="2" height="10" title="30" alt="30"/></td><td class="ctr2" id="c7">31%</td><td class="bar" id="d2"><img src="../jacoco-resources/redbar.gif" width="11" height="10" title="18" alt="18"/></td><td class="ctr2" id="e7">0%</td><td class="ctr1" id="f4">10</td><td class="ctr2" id="g4">11</td><td class="ctr1" id="h5">11</td><td class="ctr2" id="i6">21</td><td class="ctr1" id="j8">1</td><td class="ctr2" id="k8">2</td><td class="ctr1" id="l6">0</td><td class="ctr2" id="m6">1</td></tr><tr><td id="a6"><a href="ReplParseException.java.html" class="el_source">ReplParseException.java</a></td><td class="bar" id="b7"><img src="../jacoco-resources/redbar.gif" width="4" height="10" title="59" alt="59"/><img src="../jacoco-resources/greenbar.gif" width="5" height="10" title="69" alt="69"/></td><td class="ctr2" id="c3">53%</td><td class="bar" id="d6"><img src="../jacoco-resources/redbar.gif" width="3" height="10" title="6" alt="6"/><img src="../jacoco-resources/greenbar.gif" width="3" height="10" title="6" alt="6"/></td><td class="ctr2" id="e2">50%</td><td class="ctr1" id="f6">7</td><td class="ctr2" id="g5">10</td><td class="ctr1" id="h6">11</td><td class="ctr2" id="i4">27</td><td class="ctr1" id="j5">2</td><td class="ctr2" id="k6">4</td><td class="ctr1" id="l7">0</td><td class="ctr2" id="m7">1</td></tr><tr><td id="a2"><a href="IntHolder.java.html" class="el_source">IntHolder.java</a></td><td class="bar" id="b8"><img src="../jacoco-resources/greenbar.gif" width="1" height="10" title="22" alt="22"/></td><td class="ctr2" id="c1">68%</td><td class="bar" id="d8"/><td class="ctr2" id="e8">n/a</td><td class="ctr1" id="f8">2</td><td class="ctr2" id="g8">6</td><td class="ctr1" id="h8">5</td><td class="ctr2" id="i8">12</td><td class="ctr1" id="j6">2</td><td class="ctr2" id="k4">6</td><td class="ctr1" id="l8">0</td><td class="ctr2" id="m8">1</td></tr><tr><td id="a8"><a href="StageStatus.java.html" class="el_source">StageStatus.java</a></td><td class="bar" id="b9"><img src="../jacoco-resources/greenbar.gif" width="2" height="10" title="34" alt="34"/></td><td class="ctr2" id="c0">100%</td><td class="bar" id="d9"/><td class="ctr2" id="e9">n/a</td><td class="ctr1" id="f9">0</td><td class="ctr2" id="g9">1</td><td class="ctr1" id="h9">0</td><td class="ctr2" id="i9">4</td><td class="ctr1" id="j9">0</td><td class="ctr2" id="k9">1</td><td class="ctr1" id="l9">0</td><td class="ctr2" id="m9">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.2.201808211720</span></div></body></html> \ No newline at end of file