Modified:
websites/production/commons/content/proper/commons-cli/apidocs/src-html/org/apache/commons/cli/Option.html
==============================================================================
---
websites/production/commons/content/proper/commons-cli/apidocs/src-html/org/apache/commons/cli/Option.html
(original)
+++
websites/production/commons/content/proper/commons-cli/apidocs/src-html/org/apache/commons/cli/Option.html
Thu Aug 15 00:03:23 2024
@@ -1,5 +1,5 @@
<!DOCTYPE HTML>
-<html lang="en">
+<html lang>
<head>
<!-- Generated by javadoc (17) -->
<title>Source code</title>
@@ -106,912 +106,937 @@
<span class="source-line-no">093</span><span id="line-93"> /**
Specifies whether this option is required to be present. */</span>
<span class="source-line-no">094</span><span id="line-94"> private
boolean required;</span>
<span class="source-line-no">095</span><span id="line-95"></span>
-<span class="source-line-no">096</span><span id="line-96"> /** The type
of this Option. */</span>
-<span class="source-line-no">097</span><span id="line-97"> private
Class<?> type = DEFAULT_TYPE;</span>
+<span class="source-line-no">096</span><span id="line-96"> /**
Specifies the version when this option was added. May be null */</span>
+<span class="source-line-no">097</span><span id="line-97"> private
String since;</span>
<span class="source-line-no">098</span><span id="line-98"></span>
-<span class="source-line-no">099</span><span id="line-99"> /** The
character that is the value separator. */</span>
-<span class="source-line-no">100</span><span id="line-100"> private
char valueSeparator;</span>
+<span class="source-line-no">099</span><span id="line-99"> /** The type
of this Option. */</span>
+<span class="source-line-no">100</span><span id="line-100"> private
Class<?> type = DEFAULT_TYPE;</span>
<span class="source-line-no">101</span><span id="line-101"></span>
-<span class="source-line-no">102</span><span id="line-102"> /**</span>
-<span class="source-line-no">103</span><span id="line-103"> *
Constructs a new {@code Builder} with the minimum required parameters for an
{@code Option} instance.</span>
-<span class="source-line-no">104</span><span id="line-104"> *</span>
-<span class="source-line-no">105</span><span id="line-105"> * @param
option short representation of the option.</span>
-<span class="source-line-no">106</span><span id="line-106"> * @throws
IllegalArgumentException if there are any non valid Option characters in {@code
opt}.</span>
-<span class="source-line-no">107</span><span id="line-107"> */</span>
-<span class="source-line-no">108</span><span id="line-108"> private
Builder(final String option) throws IllegalArgumentException {</span>
-<span class="source-line-no">109</span><span id="line-109">
option(option);</span>
-<span class="source-line-no">110</span><span id="line-110"> }</span>
-<span class="source-line-no">111</span><span id="line-111"></span>
-<span class="source-line-no">112</span><span id="line-112"> /**</span>
-<span class="source-line-no">113</span><span id="line-113"> * Sets the
display name for the argument value.</span>
-<span class="source-line-no">114</span><span id="line-114"> *</span>
-<span class="source-line-no">115</span><span id="line-115"> * @param
argName the display name for the argument value.</span>
-<span class="source-line-no">116</span><span id="line-116"> * @return
this builder, to allow method chaining.</span>
-<span class="source-line-no">117</span><span id="line-117"> */</span>
-<span class="source-line-no">118</span><span id="line-118"> public
Builder argName(final String argName) {</span>
-<span class="source-line-no">119</span><span id="line-119">
this.argName = argName;</span>
-<span class="source-line-no">120</span><span id="line-120"> return
this;</span>
-<span class="source-line-no">121</span><span id="line-121"> }</span>
-<span class="source-line-no">122</span><span id="line-122"></span>
-<span class="source-line-no">123</span><span id="line-123"> /**</span>
-<span class="source-line-no">124</span><span id="line-124"> *
Constructs an Option with the values declared by this {@link Builder}.</span>
-<span class="source-line-no">125</span><span id="line-125"> *</span>
-<span class="source-line-no">126</span><span id="line-126"> * @return
the new {@link Option}.</span>
-<span class="source-line-no">127</span><span id="line-127"> * @throws
IllegalArgumentException if neither {@code opt} or {@code longOpt} has been
set.</span>
-<span class="source-line-no">128</span><span id="line-128"> */</span>
-<span class="source-line-no">129</span><span id="line-129"> public
Option build() {</span>
-<span class="source-line-no">130</span><span id="line-130"> if
(option == null && longOption == null) {</span>
-<span class="source-line-no">131</span><span id="line-131">
throw new IllegalArgumentException("Either opt or longOpt must be
specified");</span>
-<span class="source-line-no">132</span><span id="line-132"> }</span>
-<span class="source-line-no">133</span><span id="line-133"> return
new Option(this);</span>
-<span class="source-line-no">134</span><span id="line-134"> }</span>
-<span class="source-line-no">135</span><span id="line-135"></span>
-<span class="source-line-no">136</span><span id="line-136"> /**</span>
-<span class="source-line-no">137</span><span id="line-137"> * Sets the
converter for the option.</span>
-<span class="source-line-no">138</span><span id="line-138"> *</span>
-<span class="source-line-no">139</span><span id="line-139"> *
<p></span>
-<span class="source-line-no">140</span><span id="line-140"> * Note:
see {@link TypeHandler} for serialization discussion.</span>
-<span class="source-line-no">141</span><span id="line-141"> *
</p></span>
-<span class="source-line-no">142</span><span id="line-142"> *</span>
-<span class="source-line-no">143</span><span id="line-143"> * @param
converter the Converter to use.</span>
-<span class="source-line-no">144</span><span id="line-144"> * @return
this builder, to allow method chaining.</span>
-<span class="source-line-no">145</span><span id="line-145"> * @since
1.7.0</span>
-<span class="source-line-no">146</span><span id="line-146"> */</span>
-<span class="source-line-no">147</span><span id="line-147"> public
Builder converter(final Converter<?, ?> converter) {</span>
-<span class="source-line-no">148</span><span id="line-148">
this.converter = converter;</span>
-<span class="source-line-no">149</span><span id="line-149"> return
this;</span>
-<span class="source-line-no">150</span><span id="line-150"> }</span>
-<span class="source-line-no">151</span><span id="line-151"></span>
-<span class="source-line-no">152</span><span id="line-152"> /**</span>
-<span class="source-line-no">153</span><span id="line-153"> * Marks
this Option as deprecated.</span>
-<span class="source-line-no">154</span><span id="line-154"> *</span>
-<span class="source-line-no">155</span><span id="line-155"> * @return
this builder.</span>
-<span class="source-line-no">156</span><span id="line-156"> * @since
1.7.0</span>
-<span class="source-line-no">157</span><span id="line-157"> */</span>
-<span class="source-line-no">158</span><span id="line-158"> public
Builder deprecated() {</span>
-<span class="source-line-no">159</span><span id="line-159"> return
deprecated(DeprecatedAttributes.DEFAULT);</span>
-<span class="source-line-no">160</span><span id="line-160"> }</span>
-<span class="source-line-no">161</span><span id="line-161"></span>
-<span class="source-line-no">162</span><span id="line-162"> /**</span>
-<span class="source-line-no">163</span><span id="line-163"> * Sets
whether the Option is deprecated.</span>
-<span class="source-line-no">164</span><span id="line-164"> *</span>
-<span class="source-line-no">165</span><span id="line-165"> * @param
deprecated specifies whether the Option is deprecated.</span>
-<span class="source-line-no">166</span><span id="line-166"> * @return
this builder.</span>
-<span class="source-line-no">167</span><span id="line-167"> * @since
1.7.0</span>
-<span class="source-line-no">168</span><span id="line-168"> */</span>
-<span class="source-line-no">169</span><span id="line-169"> public
Builder deprecated(final DeprecatedAttributes deprecated) {</span>
-<span class="source-line-no">170</span><span id="line-170">
this.deprecated = deprecated;</span>
-<span class="source-line-no">171</span><span id="line-171"> return
this;</span>
-<span class="source-line-no">172</span><span id="line-172"> }</span>
-<span class="source-line-no">173</span><span id="line-173"></span>
-<span class="source-line-no">174</span><span id="line-174"> /**</span>
-<span class="source-line-no">175</span><span id="line-175"> * Sets the
description for this option.</span>
-<span class="source-line-no">176</span><span id="line-176"> *</span>
-<span class="source-line-no">177</span><span id="line-177"> * @param
description the description of the option.</span>
-<span class="source-line-no">178</span><span id="line-178"> * @return
this builder, to allow method chaining.</span>
-<span class="source-line-no">179</span><span id="line-179"> */</span>
-<span class="source-line-no">180</span><span id="line-180"> public
Builder desc(final String description) {</span>
-<span class="source-line-no">181</span><span id="line-181">
this.description = description;</span>
-<span class="source-line-no">182</span><span id="line-182"> return
this;</span>
-<span class="source-line-no">183</span><span id="line-183"> }</span>
-<span class="source-line-no">184</span><span id="line-184"></span>
-<span class="source-line-no">185</span><span id="line-185"> /**</span>
-<span class="source-line-no">186</span><span id="line-186"> * Tests
whether the Option will require an argument.</span>
-<span class="source-line-no">187</span><span id="line-187"> *</span>
-<span class="source-line-no">188</span><span id="line-188"> * @return
this builder, to allow method chaining.</span>
-<span class="source-line-no">189</span><span id="line-189"> */</span>
-<span class="source-line-no">190</span><span id="line-190"> public
Builder hasArg() {</span>
-<span class="source-line-no">191</span><span id="line-191"> return
hasArg(true);</span>
-<span class="source-line-no">192</span><span id="line-192"> }</span>
-<span class="source-line-no">193</span><span id="line-193"></span>
-<span class="source-line-no">194</span><span id="line-194"> /**</span>
-<span class="source-line-no">195</span><span id="line-195"> * Tests
whether the Option has an argument or not.</span>
-<span class="source-line-no">196</span><span id="line-196"> *</span>
-<span class="source-line-no">197</span><span id="line-197"> * @param
hasArg specifies whether the Option takes an argument or not.</span>
-<span class="source-line-no">198</span><span id="line-198"> * @return
this builder, to allow method chaining.</span>
-<span class="source-line-no">199</span><span id="line-199"> */</span>
-<span class="source-line-no">200</span><span id="line-200"> public
Builder hasArg(final boolean hasArg) {</span>
-<span class="source-line-no">201</span><span id="line-201"> // set
to UNINITIALIZED when no arg is specified to be compatible with
OptionBuilder</span>
-<span class="source-line-no">202</span><span id="line-202">
argCount = hasArg ? 1 : UNINITIALIZED;</span>
-<span class="source-line-no">203</span><span id="line-203"> return
this;</span>
-<span class="source-line-no">204</span><span id="line-204"> }</span>
-<span class="source-line-no">205</span><span id="line-205"></span>
-<span class="source-line-no">206</span><span id="line-206"> /**</span>
-<span class="source-line-no">207</span><span id="line-207"> * Tests
whether the Option can have unlimited argument values.</span>
-<span class="source-line-no">208</span><span id="line-208"> *</span>
-<span class="source-line-no">209</span><span id="line-209"> * @return
this builder.</span>
-<span class="source-line-no">210</span><span id="line-210"> */</span>
-<span class="source-line-no">211</span><span id="line-211"> public
Builder hasArgs() {</span>
-<span class="source-line-no">212</span><span id="line-212">
argCount = UNLIMITED_VALUES;</span>
-<span class="source-line-no">213</span><span id="line-213"> return
this;</span>
-<span class="source-line-no">214</span><span id="line-214"> }</span>
-<span class="source-line-no">215</span><span id="line-215"></span>
-<span class="source-line-no">216</span><span id="line-216"> /**</span>
-<span class="source-line-no">217</span><span id="line-217"> * Sets the
long name of the Option.</span>
-<span class="source-line-no">218</span><span id="line-218"> *</span>
-<span class="source-line-no">219</span><span id="line-219"> * @param
longOpt the long name of the Option</span>
-<span class="source-line-no">220</span><span id="line-220"> * @return
this builder.</span>
-<span class="source-line-no">221</span><span id="line-221"> */</span>
-<span class="source-line-no">222</span><span id="line-222"> public
Builder longOpt(final String longOpt) {</span>
-<span class="source-line-no">223</span><span id="line-223">
this.longOption = longOpt;</span>
-<span class="source-line-no">224</span><span id="line-224"> return
this;</span>
-<span class="source-line-no">225</span><span id="line-225"> }</span>
-<span class="source-line-no">226</span><span id="line-226"></span>
-<span class="source-line-no">227</span><span id="line-227"> /**</span>
-<span class="source-line-no">228</span><span id="line-228"> * Sets the
number of argument values the Option can take.</span>
-<span class="source-line-no">229</span><span id="line-229"> *</span>
-<span class="source-line-no">230</span><span id="line-230"> * @param
argCount the number of argument values</span>
-<span class="source-line-no">231</span><span id="line-231"> * @return
this builder.</span>
-<span class="source-line-no">232</span><span id="line-232"> */</span>
-<span class="source-line-no">233</span><span id="line-233"> public
Builder numberOfArgs(final int argCount) {</span>
-<span class="source-line-no">234</span><span id="line-234">
this.argCount = argCount;</span>
-<span class="source-line-no">235</span><span id="line-235"> return
this;</span>
-<span class="source-line-no">236</span><span id="line-236"> }</span>
-<span class="source-line-no">237</span><span id="line-237"></span>
-<span class="source-line-no">238</span><span id="line-238"> /**</span>
-<span class="source-line-no">239</span><span id="line-239"> * Sets the
name of the Option.</span>
-<span class="source-line-no">240</span><span id="line-240"> *</span>
-<span class="source-line-no">241</span><span id="line-241"> * @param
option the name of the Option.</span>
-<span class="source-line-no">242</span><span id="line-242"> * @return
this builder.</span>
-<span class="source-line-no">243</span><span id="line-243"> * @throws
IllegalArgumentException if there are any non valid Option characters in {@code
opt}.</span>
-<span class="source-line-no">244</span><span id="line-244"> * @since
1.5.0</span>
-<span class="source-line-no">245</span><span id="line-245"> */</span>
-<span class="source-line-no">246</span><span id="line-246"> public
Builder option(final String option) throws IllegalArgumentException {</span>
-<span class="source-line-no">247</span><span id="line-247">
this.option = OptionValidator.validate(option);</span>
-<span class="source-line-no">248</span><span id="line-248"> return
this;</span>
-<span class="source-line-no">249</span><span id="line-249"> }</span>
-<span class="source-line-no">250</span><span id="line-250"></span>
-<span class="source-line-no">251</span><span id="line-251"> /**</span>
-<span class="source-line-no">252</span><span id="line-252"> * Sets
whether the Option can have an optional argument.</span>
-<span class="source-line-no">253</span><span id="line-253"> *</span>
-<span class="source-line-no">254</span><span id="line-254"> * @param
optionalArg specifies whether the Option can have an optional argument.</span>
-<span class="source-line-no">255</span><span id="line-255"> * @return
this builder.</span>
-<span class="source-line-no">256</span><span id="line-256"> */</span>
-<span class="source-line-no">257</span><span id="line-257"> public
Builder optionalArg(final boolean optionalArg) {</span>
-<span class="source-line-no">258</span><span id="line-258"> if
(optionalArg && this.argCount == UNINITIALIZED) {</span>
-<span class="source-line-no">259</span><span id="line-259">
this.argCount = 1;</span>
-<span class="source-line-no">260</span><span id="line-260"> }</span>
-<span class="source-line-no">261</span><span id="line-261">
this.optionalArg = optionalArg;</span>
-<span class="source-line-no">262</span><span id="line-262"> return
this;</span>
-<span class="source-line-no">263</span><span id="line-263"> }</span>
-<span class="source-line-no">264</span><span id="line-264"></span>
-<span class="source-line-no">265</span><span id="line-265"> /**</span>
-<span class="source-line-no">266</span><span id="line-266"> * Marks
this Option as required.</span>
-<span class="source-line-no">267</span><span id="line-267"> *</span>
-<span class="source-line-no">268</span><span id="line-268"> * @return
this builder.</span>
-<span class="source-line-no">269</span><span id="line-269"> */</span>
-<span class="source-line-no">270</span><span id="line-270"> public
Builder required() {</span>
-<span class="source-line-no">271</span><span id="line-271"> return
required(true);</span>
-<span class="source-line-no">272</span><span id="line-272"> }</span>
-<span class="source-line-no">273</span><span id="line-273"></span>
-<span class="source-line-no">274</span><span id="line-274"> /**</span>
-<span class="source-line-no">275</span><span id="line-275"> * Sets
whether the Option is required.</span>
-<span class="source-line-no">276</span><span id="line-276"> *</span>
-<span class="source-line-no">277</span><span id="line-277"> * @param
required specifies whether the Option is required.</span>
-<span class="source-line-no">278</span><span id="line-278"> * @return
this builder.</span>
-<span class="source-line-no">279</span><span id="line-279"> */</span>
-<span class="source-line-no">280</span><span id="line-280"> public
Builder required(final boolean required) {</span>
-<span class="source-line-no">281</span><span id="line-281">
this.required = required;</span>
-<span class="source-line-no">282</span><span id="line-282"> return
this;</span>
-<span class="source-line-no">283</span><span id="line-283"> }</span>
-<span class="source-line-no">284</span><span id="line-284"></span>
-<span class="source-line-no">285</span><span id="line-285"> /**</span>
-<span class="source-line-no">286</span><span id="line-286"> * Sets the
type of the Option.</span>
-<span class="source-line-no">287</span><span id="line-287"> *</span>
-<span class="source-line-no">288</span><span id="line-288"> * @param
type the type of the Option.</span>
-<span class="source-line-no">289</span><span id="line-289"> * @return
this builder.</span>
-<span class="source-line-no">290</span><span id="line-290"> */</span>
-<span class="source-line-no">291</span><span id="line-291"> public
Builder type(final Class<?> type) {</span>
-<span class="source-line-no">292</span><span id="line-292">
this.type = toType(type);</span>
-<span class="source-line-no">293</span><span id="line-293"> return
this;</span>
-<span class="source-line-no">294</span><span id="line-294"> }</span>
-<span class="source-line-no">295</span><span id="line-295"></span>
-<span class="source-line-no">296</span><span id="line-296"> /**</span>
-<span class="source-line-no">297</span><span id="line-297"> * The
Option will use '=' as a means to separate argument value.</span>
-<span class="source-line-no">298</span><span id="line-298"> *</span>
-<span class="source-line-no">299</span><span id="line-299"> * @return
this builder.</span>
-<span class="source-line-no">300</span><span id="line-300"> */</span>
-<span class="source-line-no">301</span><span id="line-301"> public
Builder valueSeparator() {</span>
-<span class="source-line-no">302</span><span id="line-302"> return
valueSeparator(Char.EQUAL);</span>
-<span class="source-line-no">303</span><span id="line-303"> }</span>
-<span class="source-line-no">304</span><span id="line-304"></span>
-<span class="source-line-no">305</span><span id="line-305"> /**</span>
-<span class="source-line-no">306</span><span id="line-306"> * The
Option will use {@code sep} as a means to separate argument values.</span>
-<span class="source-line-no">307</span><span id="line-307"> *
<p></span>
-<span class="source-line-no">308</span><span id="line-308"> *
<b>Example:</b></span>
-<span class="source-line-no">309</span><span id="line-309"> *
</p></span>
+<span class="source-line-no">102</span><span id="line-102"> /** The
character that is the value separator. */</span>
+<span class="source-line-no">103</span><span id="line-103"> private
char valueSeparator;</span>
+<span class="source-line-no">104</span><span id="line-104"></span>
+<span class="source-line-no">105</span><span id="line-105"> /**</span>
+<span class="source-line-no">106</span><span id="line-106"> *
Constructs a new {@code Builder} with the minimum required parameters for an
{@code Option} instance.</span>
+<span class="source-line-no">107</span><span id="line-107"> *</span>
+<span class="source-line-no">108</span><span id="line-108"> * @param
option short representation of the option.</span>
+<span class="source-line-no">109</span><span id="line-109"> * @throws
IllegalArgumentException if there are any non valid Option characters in {@code
opt}.</span>
+<span class="source-line-no">110</span><span id="line-110"> */</span>
+<span class="source-line-no">111</span><span id="line-111"> private
Builder(final String option) throws IllegalArgumentException {</span>
+<span class="source-line-no">112</span><span id="line-112">
option(option);</span>
+<span class="source-line-no">113</span><span id="line-113"> }</span>
+<span class="source-line-no">114</span><span id="line-114"></span>
+<span class="source-line-no">115</span><span id="line-115"> /**</span>
+<span class="source-line-no">116</span><span id="line-116"> * Sets the
display name for the argument value.</span>
+<span class="source-line-no">117</span><span id="line-117"> *</span>
+<span class="source-line-no">118</span><span id="line-118"> * @param
argName the display name for the argument value.</span>
+<span class="source-line-no">119</span><span id="line-119"> * @return
this builder, to allow method chaining.</span>
+<span class="source-line-no">120</span><span id="line-120"> */</span>
+<span class="source-line-no">121</span><span id="line-121"> public
Builder argName(final String argName) {</span>
+<span class="source-line-no">122</span><span id="line-122">
this.argName = argName;</span>
+<span class="source-line-no">123</span><span id="line-123"> return
this;</span>
+<span class="source-line-no">124</span><span id="line-124"> }</span>
+<span class="source-line-no">125</span><span id="line-125"></span>
+<span class="source-line-no">126</span><span id="line-126"> /**</span>
+<span class="source-line-no">127</span><span id="line-127"> *
Constructs an Option with the values declared by this {@link Builder}.</span>
+<span class="source-line-no">128</span><span id="line-128"> *</span>
+<span class="source-line-no">129</span><span id="line-129"> * @return
the new {@link Option}.</span>
+<span class="source-line-no">130</span><span id="line-130"> * @throws
IllegalArgumentException if neither {@code opt} or {@code longOpt} has been
set.</span>
+<span class="source-line-no">131</span><span id="line-131"> */</span>
+<span class="source-line-no">132</span><span id="line-132"> public
Option build() {</span>
+<span class="source-line-no">133</span><span id="line-133"> if
(option == null && longOption == null) {</span>
+<span class="source-line-no">134</span><span id="line-134">
throw new IllegalArgumentException("Either opt or longOpt must be
specified");</span>
+<span class="source-line-no">135</span><span id="line-135"> }</span>
+<span class="source-line-no">136</span><span id="line-136"> return
new Option(this);</span>
+<span class="source-line-no">137</span><span id="line-137"> }</span>
+<span class="source-line-no">138</span><span id="line-138"></span>
+<span class="source-line-no">139</span><span id="line-139"> /**</span>
+<span class="source-line-no">140</span><span id="line-140"> * Sets the
converter for the option.</span>
+<span class="source-line-no">141</span><span id="line-141"> *
<p></span>
+<span class="source-line-no">142</span><span id="line-142"> * Note:
See {@link TypeHandler} for serialization discussion.</span>
+<span class="source-line-no">143</span><span id="line-143"> *
</p></span>
+<span class="source-line-no">144</span><span id="line-144"> *</span>
+<span class="source-line-no">145</span><span id="line-145"> * @param
converter the Converter to use.</span>
+<span class="source-line-no">146</span><span id="line-146"> * @return
this builder, to allow method chaining.</span>
+<span class="source-line-no">147</span><span id="line-147"> * @since
1.7.0</span>
+<span class="source-line-no">148</span><span id="line-148"> */</span>
+<span class="source-line-no">149</span><span id="line-149"> public
Builder converter(final Converter<?, ?> converter) {</span>
+<span class="source-line-no">150</span><span id="line-150">
this.converter = converter;</span>
+<span class="source-line-no">151</span><span id="line-151"> return
this;</span>
+<span class="source-line-no">152</span><span id="line-152"> }</span>
+<span class="source-line-no">153</span><span id="line-153"></span>
+<span class="source-line-no">154</span><span id="line-154"> /**</span>
+<span class="source-line-no">155</span><span id="line-155"> * Marks
this Option as deprecated.</span>
+<span class="source-line-no">156</span><span id="line-156"> *</span>
+<span class="source-line-no">157</span><span id="line-157"> * @return
this builder.</span>
+<span class="source-line-no">158</span><span id="line-158"> * @since
1.7.0</span>
+<span class="source-line-no">159</span><span id="line-159"> */</span>
+<span class="source-line-no">160</span><span id="line-160"> public
Builder deprecated() {</span>
+<span class="source-line-no">161</span><span id="line-161"> return
deprecated(DeprecatedAttributes.DEFAULT);</span>
+<span class="source-line-no">162</span><span id="line-162"> }</span>
+<span class="source-line-no">163</span><span id="line-163"></span>
+<span class="source-line-no">164</span><span id="line-164"> /**</span>
+<span class="source-line-no">165</span><span id="line-165"> * Sets
whether the Option is deprecated.</span>
+<span class="source-line-no">166</span><span id="line-166"> *</span>
+<span class="source-line-no">167</span><span id="line-167"> * @param
deprecated specifies whether the Option is deprecated.</span>
+<span class="source-line-no">168</span><span id="line-168"> * @return
this builder.</span>
+<span class="source-line-no">169</span><span id="line-169"> * @since
1.7.0</span>
+<span class="source-line-no">170</span><span id="line-170"> */</span>
+<span class="source-line-no">171</span><span id="line-171"> public
Builder deprecated(final DeprecatedAttributes deprecated) {</span>
+<span class="source-line-no">172</span><span id="line-172">
this.deprecated = deprecated;</span>
+<span class="source-line-no">173</span><span id="line-173"> return
this;</span>
+<span class="source-line-no">174</span><span id="line-174"> }</span>
+<span class="source-line-no">175</span><span id="line-175"></span>
+<span class="source-line-no">176</span><span id="line-176"> /**</span>
+<span class="source-line-no">177</span><span id="line-177"> * Sets the
description for this option.</span>
+<span class="source-line-no">178</span><span id="line-178"> *</span>
+<span class="source-line-no">179</span><span id="line-179"> * @param
description the description of the option.</span>
+<span class="source-line-no">180</span><span id="line-180"> * @return
this builder, to allow method chaining.</span>
+<span class="source-line-no">181</span><span id="line-181"> */</span>
+<span class="source-line-no">182</span><span id="line-182"> public
Builder desc(final String description) {</span>
+<span class="source-line-no">183</span><span id="line-183">
this.description = description;</span>
+<span class="source-line-no">184</span><span id="line-184"> return
this;</span>
+<span class="source-line-no">185</span><span id="line-185"> }</span>
+<span class="source-line-no">186</span><span id="line-186"></span>
+<span class="source-line-no">187</span><span id="line-187"> /**</span>
+<span class="source-line-no">188</span><span id="line-188"> * Tests
whether the Option will require an argument.</span>
+<span class="source-line-no">189</span><span id="line-189"> *</span>
+<span class="source-line-no">190</span><span id="line-190"> * @return
this builder, to allow method chaining.</span>
+<span class="source-line-no">191</span><span id="line-191"> */</span>
+<span class="source-line-no">192</span><span id="line-192"> public
Builder hasArg() {</span>
+<span class="source-line-no">193</span><span id="line-193"> return
hasArg(true);</span>
+<span class="source-line-no">194</span><span id="line-194"> }</span>
+<span class="source-line-no">195</span><span id="line-195"></span>
+<span class="source-line-no">196</span><span id="line-196"> /**</span>
+<span class="source-line-no">197</span><span id="line-197"> * Tests
whether the Option has an argument or not.</span>
+<span class="source-line-no">198</span><span id="line-198"> *</span>
+<span class="source-line-no">199</span><span id="line-199"> * @param
hasArg specifies whether the Option takes an argument or not.</span>
+<span class="source-line-no">200</span><span id="line-200"> * @return
this builder, to allow method chaining.</span>
+<span class="source-line-no">201</span><span id="line-201"> */</span>
+<span class="source-line-no">202</span><span id="line-202"> public
Builder hasArg(final boolean hasArg) {</span>
+<span class="source-line-no">203</span><span id="line-203"> // set
to UNINITIALIZED when no arg is specified to be compatible with
OptionBuilder</span>
+<span class="source-line-no">204</span><span id="line-204">
argCount = hasArg ? 1 : UNINITIALIZED;</span>
+<span class="source-line-no">205</span><span id="line-205"> return
this;</span>
+<span class="source-line-no">206</span><span id="line-206"> }</span>
+<span class="source-line-no">207</span><span id="line-207"></span>
+<span class="source-line-no">208</span><span id="line-208"> /**</span>
+<span class="source-line-no">209</span><span id="line-209"> * Tests
whether the Option can have unlimited argument values.</span>
+<span class="source-line-no">210</span><span id="line-210"> *</span>
+<span class="source-line-no">211</span><span id="line-211"> * @return
this builder.</span>
+<span class="source-line-no">212</span><span id="line-212"> */</span>
+<span class="source-line-no">213</span><span id="line-213"> public
Builder hasArgs() {</span>
+<span class="source-line-no">214</span><span id="line-214">
argCount = UNLIMITED_VALUES;</span>
+<span class="source-line-no">215</span><span id="line-215"> return
this;</span>
+<span class="source-line-no">216</span><span id="line-216"> }</span>
+<span class="source-line-no">217</span><span id="line-217"></span>
+<span class="source-line-no">218</span><span id="line-218"> /**</span>
+<span class="source-line-no">219</span><span id="line-219"> * Sets the
long name of the Option.</span>
+<span class="source-line-no">220</span><span id="line-220"> *</span>
+<span class="source-line-no">221</span><span id="line-221"> * @param
longOption the long name of the Option</span>
+<span class="source-line-no">222</span><span id="line-222"> * @return
this builder.</span>
+<span class="source-line-no">223</span><span id="line-223"> */</span>
+<span class="source-line-no">224</span><span id="line-224"> public
Builder longOpt(final String longOption) {</span>
+<span class="source-line-no">225</span><span id="line-225">
this.longOption = longOption;</span>
+<span class="source-line-no">226</span><span id="line-226"> return
this;</span>
+<span class="source-line-no">227</span><span id="line-227"> }</span>
+<span class="source-line-no">228</span><span id="line-228"></span>
+<span class="source-line-no">229</span><span id="line-229"> /**</span>
+<span class="source-line-no">230</span><span id="line-230"> * Sets the
number of argument values the Option can take.</span>
+<span class="source-line-no">231</span><span id="line-231"> *</span>
+<span class="source-line-no">232</span><span id="line-232"> * @param
argCount the number of argument values</span>
+<span class="source-line-no">233</span><span id="line-233"> * @return
this builder.</span>
+<span class="source-line-no">234</span><span id="line-234"> */</span>
+<span class="source-line-no">235</span><span id="line-235"> public
Builder numberOfArgs(final int argCount) {</span>
+<span class="source-line-no">236</span><span id="line-236">
this.argCount = argCount;</span>
+<span class="source-line-no">237</span><span id="line-237"> return
this;</span>
+<span class="source-line-no">238</span><span id="line-238"> }</span>
+<span class="source-line-no">239</span><span id="line-239"></span>
+<span class="source-line-no">240</span><span id="line-240"> /**</span>
+<span class="source-line-no">241</span><span id="line-241"> * Sets the
name of the Option.</span>
+<span class="source-line-no">242</span><span id="line-242"> *</span>
+<span class="source-line-no">243</span><span id="line-243"> * @param
option the name of the Option.</span>
+<span class="source-line-no">244</span><span id="line-244"> * @return
this builder.</span>
+<span class="source-line-no">245</span><span id="line-245"> * @throws
IllegalArgumentException if there are any non valid Option characters in {@code
opt}.</span>
+<span class="source-line-no">246</span><span id="line-246"> * @since
1.5.0</span>
+<span class="source-line-no">247</span><span id="line-247"> */</span>
+<span class="source-line-no">248</span><span id="line-248"> public
Builder option(final String option) throws IllegalArgumentException {</span>
+<span class="source-line-no">249</span><span id="line-249">
this.option = OptionValidator.validate(option);</span>
+<span class="source-line-no">250</span><span id="line-250"> return
this;</span>
+<span class="source-line-no">251</span><span id="line-251"> }</span>
+<span class="source-line-no">252</span><span id="line-252"></span>
+<span class="source-line-no">253</span><span id="line-253"> /**</span>
+<span class="source-line-no">254</span><span id="line-254"> * Sets
whether the Option can have an optional argument.</span>
+<span class="source-line-no">255</span><span id="line-255"> *</span>
+<span class="source-line-no">256</span><span id="line-256"> * @param
optionalArg specifies whether the Option can have an optional argument.</span>
+<span class="source-line-no">257</span><span id="line-257"> * @return
this builder.</span>
+<span class="source-line-no">258</span><span id="line-258"> */</span>
+<span class="source-line-no">259</span><span id="line-259"> public
Builder optionalArg(final boolean optionalArg) {</span>
+<span class="source-line-no">260</span><span id="line-260"> if
(optionalArg && argCount == UNINITIALIZED) {</span>
+<span class="source-line-no">261</span><span id="line-261">
argCount = 1;</span>
+<span class="source-line-no">262</span><span id="line-262"> }</span>
+<span class="source-line-no">263</span><span id="line-263">
this.optionalArg = optionalArg;</span>
+<span class="source-line-no">264</span><span id="line-264"> return
this;</span>
+<span class="source-line-no">265</span><span id="line-265"> }</span>
+<span class="source-line-no">266</span><span id="line-266"></span>
+<span class="source-line-no">267</span><span id="line-267"> /**</span>
+<span class="source-line-no">268</span><span id="line-268"> * Marks
this Option as required.</span>
+<span class="source-line-no">269</span><span id="line-269"> *</span>
+<span class="source-line-no">270</span><span id="line-270"> * @return
this builder.</span>
+<span class="source-line-no">271</span><span id="line-271"> */</span>
+<span class="source-line-no">272</span><span id="line-272"> public
Builder required() {</span>
+<span class="source-line-no">273</span><span id="line-273"> return
required(true);</span>
+<span class="source-line-no">274</span><span id="line-274"> }</span>
+<span class="source-line-no">275</span><span id="line-275"></span>
+<span class="source-line-no">276</span><span id="line-276"> /**</span>
+<span class="source-line-no">277</span><span id="line-277"> * Sets
whether the Option is required.</span>
+<span class="source-line-no">278</span><span id="line-278"> *</span>
+<span class="source-line-no">279</span><span id="line-279"> * @param
required specifies whether the Option is required.</span>
+<span class="source-line-no">280</span><span id="line-280"> * @return
this builder.</span>
+<span class="source-line-no">281</span><span id="line-281"> */</span>
+<span class="source-line-no">282</span><span id="line-282"> public
Builder required(final boolean required) {</span>
+<span class="source-line-no">283</span><span id="line-283">
this.required = required;</span>
+<span class="source-line-no">284</span><span id="line-284"> return
this;</span>
+<span class="source-line-no">285</span><span id="line-285"> }</span>
+<span class="source-line-no">286</span><span id="line-286"></span>
+<span class="source-line-no">287</span><span id="line-287"> /** Sets
the version number when this option was first defined."</span>
+<span class="source-line-no">288</span><span id="line-288"> *</span>
+<span class="source-line-no">289</span><span id="line-289"> * @param
since the version number when this option was first defined.</span>
+<span class="source-line-no">290</span><span id="line-290"> * @return
this builder.</span>
+<span class="source-line-no">291</span><span id="line-291"> */</span>
+<span class="source-line-no">292</span><span id="line-292"> public
Builder since(final String since) {</span>
+<span class="source-line-no">293</span><span id="line-293">
this.since = since;</span>
+<span class="source-line-no">294</span><span id="line-294"> return
this;</span>
+<span class="source-line-no">295</span><span id="line-295"> }</span>
+<span class="source-line-no">296</span><span id="line-296"></span>
+<span class="source-line-no">297</span><span id="line-297"> /**</span>
+<span class="source-line-no">298</span><span id="line-298"> * Sets the
type of the Option.</span>
+<span class="source-line-no">299</span><span id="line-299"> *</span>
+<span class="source-line-no">300</span><span id="line-300"> * @param
type the type of the Option.</span>
+<span class="source-line-no">301</span><span id="line-301"> * @return
this builder.</span>
+<span class="source-line-no">302</span><span id="line-302"> */</span>
+<span class="source-line-no">303</span><span id="line-303"> public
Builder type(final Class<?> type) {</span>
+<span class="source-line-no">304</span><span id="line-304">
this.type = toType(type);</span>
+<span class="source-line-no">305</span><span id="line-305"> return
this;</span>
+<span class="source-line-no">306</span><span id="line-306"> }</span>
+<span class="source-line-no">307</span><span id="line-307"></span>
+<span class="source-line-no">308</span><span id="line-308"> /**</span>
+<span class="source-line-no">309</span><span id="line-309"> * The
Option will use '=' as a means to separate argument value.</span>
<span class="source-line-no">310</span><span id="line-310"> *</span>
-<span class="source-line-no">311</span><span id="line-311"> *
<pre></span>
-<span class="source-line-no">312</span><span id="line-312"> * Option
opt = Option.builder("D").hasArgs().valueSeparator('=').build();</span>
-<span class="source-line-no">313</span><span id="line-313"> * Options
options = new Options();</span>
-<span class="source-line-no">314</span><span id="line-314"> *
options.addOption(opt);</span>
-<span class="source-line-no">315</span><span id="line-315"> * String[]
args = { "-Dkey=value" };</span>
-<span class="source-line-no">316</span><span id="line-316"> *
CommandLineParser parser = new DefaultParser();</span>
-<span class="source-line-no">317</span><span id="line-317"> *
CommandLine line = parser.parse(options, args);</span>
-<span class="source-line-no">318</span><span id="line-318"> * String
propertyName = line.getOptionValues("D")[0]; // will be "key"</span>
-<span class="source-line-no">319</span><span id="line-319"> * String
propertyValue = line.getOptionValues("D")[1]; // will be "value"</span>
-<span class="source-line-no">320</span><span id="line-320"> *
</pre></span>
-<span class="source-line-no">321</span><span id="line-321"> *</span>
-<span class="source-line-no">322</span><span id="line-322"> * @param
valueSeparator The value separator.</span>
-<span class="source-line-no">323</span><span id="line-323"> * @return
this builder.</span>
-<span class="source-line-no">324</span><span id="line-324"> */</span>
-<span class="source-line-no">325</span><span id="line-325"> public
Builder valueSeparator(final char valueSeparator) {</span>
-<span class="source-line-no">326</span><span id="line-326">
this.valueSeparator = valueSeparator;</span>
-<span class="source-line-no">327</span><span id="line-327"> return
this;</span>
-<span class="source-line-no">328</span><span id="line-328"> }</span>
-<span class="source-line-no">329</span><span id="line-329"></span>
-<span class="source-line-no">330</span><span id="line-330"> }</span>
-<span class="source-line-no">331</span><span id="line-331"></span>
-<span class="source-line-no">332</span><span id="line-332"> /** Empty
array. */</span>
-<span class="source-line-no">333</span><span id="line-333"> static final
Option[] EMPTY_ARRAY = {};</span>
-<span class="source-line-no">334</span><span id="line-334"></span>
-<span class="source-line-no">335</span><span id="line-335"> /** The serial
version UID. */</span>
-<span class="source-line-no">336</span><span id="line-336"> private static
final long serialVersionUID = 1L;</span>
-<span class="source-line-no">337</span><span id="line-337"></span>
-<span class="source-line-no">338</span><span id="line-338"> /** Specifies
the number of argument values has not been specified. */</span>
-<span class="source-line-no">339</span><span id="line-339"> public static
final int UNINITIALIZED = -1;</span>
-<span class="source-line-no">340</span><span id="line-340"></span>
-<span class="source-line-no">341</span><span id="line-341"> /** Specifies
the number of argument values is infinite. */</span>
-<span class="source-line-no">342</span><span id="line-342"> public static
final int UNLIMITED_VALUES = -2;</span>
+<span class="source-line-no">311</span><span id="line-311"> * @return
this builder.</span>
+<span class="source-line-no">312</span><span id="line-312"> */</span>
+<span class="source-line-no">313</span><span id="line-313"> public
Builder valueSeparator() {</span>
+<span class="source-line-no">314</span><span id="line-314"> return
valueSeparator(Char.EQUAL);</span>
+<span class="source-line-no">315</span><span id="line-315"> }</span>
+<span class="source-line-no">316</span><span id="line-316"></span>
+<span class="source-line-no">317</span><span id="line-317"> /**</span>
+<span class="source-line-no">318</span><span id="line-318"> * The
Option will use {@code sep} as a means to separate argument values.</span>
+<span class="source-line-no">319</span><span id="line-319"> *
<p></span>
+<span class="source-line-no">320</span><span id="line-320"> *
<b>Example:</b></span>
+<span class="source-line-no">321</span><span id="line-321"> *
</p></span>
+<span class="source-line-no">322</span><span id="line-322"> *</span>
+<span class="source-line-no">323</span><span id="line-323"> *
<pre></span>
+<span class="source-line-no">324</span><span id="line-324"> * Option
opt = Option.builder("D").hasArgs().valueSeparator('=').build();</span>
+<span class="source-line-no">325</span><span id="line-325"> * Options
options = new Options();</span>
+<span class="source-line-no">326</span><span id="line-326"> *
options.addOption(opt);</span>
+<span class="source-line-no">327</span><span id="line-327"> * String[]
args = { "-Dkey=value" };</span>
+<span class="source-line-no">328</span><span id="line-328"> *
CommandLineParser parser = new DefaultParser();</span>
+<span class="source-line-no">329</span><span id="line-329"> *
CommandLine line = parser.parse(options, args);</span>
+<span class="source-line-no">330</span><span id="line-330"> * String
propertyName = line.getOptionValues("D")[0]; // will be "key"</span>
+<span class="source-line-no">331</span><span id="line-331"> * String
propertyValue = line.getOptionValues("D")[1]; // will be "value"</span>
+<span class="source-line-no">332</span><span id="line-332"> *
</pre></span>
+<span class="source-line-no">333</span><span id="line-333"> *</span>
+<span class="source-line-no">334</span><span id="line-334"> * @param
valueSeparator The value separator.</span>
+<span class="source-line-no">335</span><span id="line-335"> * @return
this builder.</span>
+<span class="source-line-no">336</span><span id="line-336"> */</span>
+<span class="source-line-no">337</span><span id="line-337"> public
Builder valueSeparator(final char valueSeparator) {</span>
+<span class="source-line-no">338</span><span id="line-338">
this.valueSeparator = valueSeparator;</span>
+<span class="source-line-no">339</span><span id="line-339"> return
this;</span>
+<span class="source-line-no">340</span><span id="line-340"> }</span>
+<span class="source-line-no">341</span><span id="line-341"></span>
+<span class="source-line-no">342</span><span id="line-342"> }</span>
<span class="source-line-no">343</span><span id="line-343"></span>
-<span class="source-line-no">344</span><span id="line-344"> /**</span>
-<span class="source-line-no">345</span><span id="line-345"> * Returns a
{@link Builder} to create an {@link Option} using descriptive methods.</span>
-<span class="source-line-no">346</span><span id="line-346"> *</span>
-<span class="source-line-no">347</span><span id="line-347"> * @return a
new {@link Builder} instance.</span>
-<span class="source-line-no">348</span><span id="line-348"> * @since
1.3</span>
-<span class="source-line-no">349</span><span id="line-349"> */</span>
-<span class="source-line-no">350</span><span id="line-350"> public static
Builder builder() {</span>
-<span class="source-line-no">351</span><span id="line-351"> return
builder(null);</span>
-<span class="source-line-no">352</span><span id="line-352"> }</span>
-<span class="source-line-no">353</span><span id="line-353"></span>
-<span class="source-line-no">354</span><span id="line-354"> /**</span>
-<span class="source-line-no">355</span><span id="line-355"> * Returns a
{@link Builder} to create an {@link Option} using descriptive methods.</span>
-<span class="source-line-no">356</span><span id="line-356"> *</span>
-<span class="source-line-no">357</span><span id="line-357"> * @param
option short representation of the option.</span>
-<span class="source-line-no">358</span><span id="line-358"> * @return a
new {@link Builder} instance.</span>
-<span class="source-line-no">359</span><span id="line-359"> * @throws
IllegalArgumentException if there are any non valid Option characters in {@code
opt}.</span>
+<span class="source-line-no">344</span><span id="line-344"> /** Empty
array. */</span>
+<span class="source-line-no">345</span><span id="line-345"> static final
Option[] EMPTY_ARRAY = {};</span>
+<span class="source-line-no">346</span><span id="line-346"></span>
+<span class="source-line-no">347</span><span id="line-347"> /** The serial
version UID. */</span>
+<span class="source-line-no">348</span><span id="line-348"> private static
final long serialVersionUID = 1L;</span>
+<span class="source-line-no">349</span><span id="line-349"></span>
+<span class="source-line-no">350</span><span id="line-350"> /** Specifies
the number of argument values has not been specified. */</span>
+<span class="source-line-no">351</span><span id="line-351"> public static
final int UNINITIALIZED = -1;</span>
+<span class="source-line-no">352</span><span id="line-352"></span>
+<span class="source-line-no">353</span><span id="line-353"> /** Specifies
the number of argument values is infinite. */</span>
+<span class="source-line-no">354</span><span id="line-354"> public static
final int UNLIMITED_VALUES = -2;</span>
+<span class="source-line-no">355</span><span id="line-355"></span>
+<span class="source-line-no">356</span><span id="line-356"> /**</span>
+<span class="source-line-no">357</span><span id="line-357"> * Returns a
{@link Builder} to create an {@link Option} using descriptive methods.</span>
+<span class="source-line-no">358</span><span id="line-358"> *</span>
+<span class="source-line-no">359</span><span id="line-359"> * @return a
new {@link Builder} instance.</span>
<span class="source-line-no">360</span><span id="line-360"> * @since
1.3</span>
<span class="source-line-no">361</span><span id="line-361"> */</span>
-<span class="source-line-no">362</span><span id="line-362"> public static
Builder builder(final String option) {</span>
-<span class="source-line-no">363</span><span id="line-363"> return new
Builder(option);</span>
+<span class="source-line-no">362</span><span id="line-362"> public static
Builder builder() {</span>
+<span class="source-line-no">363</span><span id="line-363"> return
builder(null);</span>
<span class="source-line-no">364</span><span id="line-364"> }</span>
<span class="source-line-no">365</span><span id="line-365"></span>
-<span class="source-line-no">366</span><span id="line-366"> /** The number
of argument values this option can have. */</span>
-<span class="source-line-no">367</span><span id="line-367"> private int
argCount = UNINITIALIZED;</span>
-<span class="source-line-no">368</span><span id="line-368"></span>
-<span class="source-line-no">369</span><span id="line-369"> /** The name of
the argument for this option. */</span>
-<span class="source-line-no">370</span><span id="line-370"> private String
argName;</span>
-<span class="source-line-no">371</span><span id="line-371"></span>
-<span class="source-line-no">372</span><span id="line-372"> /** The
explicit converter for this option. May be null. */</span>
-<span class="source-line-no">373</span><span id="line-373"> private
transient Converter<?, ?> converter;</span>
-<span class="source-line-no">374</span><span id="line-374"></span>
-<span class="source-line-no">375</span><span id="line-375"> /**</span>
-<span class="source-line-no">376</span><span id="line-376"> * Specifies
whether this option is deprecated, may be null.</span>
-<span class="source-line-no">377</span><span id="line-377"> *
<p></span>
-<span class="source-line-no">378</span><span id="line-378"> * If you want
to serialize this field, use a serialization proxy.</span>
-<span class="source-line-no">379</span><span id="line-379"> *
</p></span>
-<span class="source-line-no">380</span><span id="line-380"> */</span>
-<span class="source-line-no">381</span><span id="line-381"> private final
transient DeprecatedAttributes deprecated;</span>
-<span class="source-line-no">382</span><span id="line-382"></span>
-<span class="source-line-no">383</span><span id="line-383"> /** Description
of the option. */</span>
-<span class="source-line-no">384</span><span id="line-384"> private String
description;</span>
-<span class="source-line-no">385</span><span id="line-385"></span>
-<span class="source-line-no">386</span><span id="line-386"> /** The long
representation of the option. */</span>
-<span class="source-line-no">387</span><span id="line-387"> private String
longOption;</span>
-<span class="source-line-no">388</span><span id="line-388"></span>
-<span class="source-line-no">389</span><span id="line-389"> /** The name of
the option. */</span>
-<span class="source-line-no">390</span><span id="line-390"> private final
String option;</span>
-<span class="source-line-no">391</span><span id="line-391"></span>
-<span class="source-line-no">392</span><span id="line-392"> /** Specifies
whether the argument value of this Option is optional. */</span>
-<span class="source-line-no">393</span><span id="line-393"> private boolean
optionalArg;</span>
+<span class="source-line-no">366</span><span id="line-366"> /**</span>
+<span class="source-line-no">367</span><span id="line-367"> * Returns a
{@link Builder} to create an {@link Option} using descriptive methods.</span>
+<span class="source-line-no">368</span><span id="line-368"> *</span>
+<span class="source-line-no">369</span><span id="line-369"> * @param
option short representation of the option.</span>
+<span class="source-line-no">370</span><span id="line-370"> * @return a
new {@link Builder} instance.</span>
+<span class="source-line-no">371</span><span id="line-371"> * @throws
IllegalArgumentException if there are any non valid Option characters in {@code
opt}.</span>
+<span class="source-line-no">372</span><span id="line-372"> * @since
1.3</span>
+<span class="source-line-no">373</span><span id="line-373"> */</span>
+<span class="source-line-no">374</span><span id="line-374"> public static
Builder builder(final String option) {</span>
+<span class="source-line-no">375</span><span id="line-375"> return new
Builder(option);</span>
+<span class="source-line-no">376</span><span id="line-376"> }</span>
+<span class="source-line-no">377</span><span id="line-377"></span>
+<span class="source-line-no">378</span><span id="line-378"> /** The number
of argument values this option can have. */</span>
+<span class="source-line-no">379</span><span id="line-379"> private int
argCount = UNINITIALIZED;</span>
+<span class="source-line-no">380</span><span id="line-380"></span>
+<span class="source-line-no">381</span><span id="line-381"> /** The name of
the argument for this option. */</span>
+<span class="source-line-no">382</span><span id="line-382"> private String
argName;</span>
+<span class="source-line-no">383</span><span id="line-383"></span>
+<span class="source-line-no">384</span><span id="line-384"> /** The
explicit converter for this option. May be null. */</span>
+<span class="source-line-no">385</span><span id="line-385"> private
transient Converter<?, ?> converter;</span>
+<span class="source-line-no">386</span><span id="line-386"></span>
+<span class="source-line-no">387</span><span id="line-387"> /**</span>
+<span class="source-line-no">388</span><span id="line-388"> * Specifies
whether this option is deprecated, may be null.</span>
+<span class="source-line-no">389</span><span id="line-389"> *
<p></span>
+<span class="source-line-no">390</span><span id="line-390"> * If you want
to serialize this field, use a serialization proxy.</span>
+<span class="source-line-no">391</span><span id="line-391"> *
</p></span>
+<span class="source-line-no">392</span><span id="line-392"> */</span>
+<span class="source-line-no">393</span><span id="line-393"> private final
transient DeprecatedAttributes deprecated;</span>
<span class="source-line-no">394</span><span id="line-394"></span>
-<span class="source-line-no">395</span><span id="line-395"> /** Specifies
whether this option is required to be present. */</span>
-<span class="source-line-no">396</span><span id="line-396"> private boolean
required;</span>
+<span class="source-line-no">395</span><span id="line-395"> /** Description
of the option. */</span>
+<span class="source-line-no">396</span><span id="line-396"> private String
description;</span>
<span class="source-line-no">397</span><span id="line-397"></span>
-<span class="source-line-no">398</span><span id="line-398"> /** The type of
this Option. */</span>
-<span class="source-line-no">399</span><span id="line-399"> private
Class<?> type = String.class;</span>
+<span class="source-line-no">398</span><span id="line-398"> /** The long
representation of the option. */</span>
+<span class="source-line-no">399</span><span id="line-399"> private String
longOption;</span>
<span class="source-line-no">400</span><span id="line-400"></span>
-<span class="source-line-no">401</span><span id="line-401"> /** The list of
argument values. **/</span>
-<span class="source-line-no">402</span><span id="line-402"> private
List<String> values = new ArrayList<>();</span>
+<span class="source-line-no">401</span><span id="line-401"> /** The name of
the option. */</span>
+<span class="source-line-no">402</span><span id="line-402"> private final
String option;</span>
<span class="source-line-no">403</span><span id="line-403"></span>
-<span class="source-line-no">404</span><span id="line-404"> /** The
character that is the value separator. */</span>
-<span class="source-line-no">405</span><span id="line-405"> private char
valuesep;</span>
+<span class="source-line-no">404</span><span id="line-404"> /** Specifies
whether the argument value of this Option is optional. */</span>
+<span class="source-line-no">405</span><span id="line-405"> private boolean
optionalArg;</span>
<span class="source-line-no">406</span><span id="line-406"></span>
-<span class="source-line-no">407</span><span id="line-407"> /**</span>
-<span class="source-line-no">408</span><span id="line-408"> * Private
constructor used by the nested Builder class.</span>
-<span class="source-line-no">409</span><span id="line-409"> *</span>
-<span class="source-line-no">410</span><span id="line-410"> * @param
builder builder used to create this option.</span>
-<span class="source-line-no">411</span><span id="line-411"> */</span>
-<span class="source-line-no">412</span><span id="line-412"> private
Option(final Builder builder) {</span>
-<span class="source-line-no">413</span><span id="line-413">
this.argName = builder.argName;</span>
-<span class="source-line-no">414</span><span id="line-414">
this.description = builder.description;</span>
-<span class="source-line-no">415</span><span id="line-415">
this.longOption = builder.longOption;</span>
-<span class="source-line-no">416</span><span id="line-416">
this.argCount = builder.argCount;</span>
-<span class="source-line-no">417</span><span id="line-417"> this.option
= builder.option;</span>
-<span class="source-line-no">418</span><span id="line-418">
this.optionalArg = builder.optionalArg;</span>
-<span class="source-line-no">419</span><span id="line-419">
this.deprecated = builder.deprecated;</span>
-<span class="source-line-no">420</span><span id="line-420">
this.required = builder.required;</span>
-<span class="source-line-no">421</span><span id="line-421"> this.type =
builder.type;</span>
-<span class="source-line-no">422</span><span id="line-422">
this.valuesep = builder.valueSeparator;</span>
-<span class="source-line-no">423</span><span id="line-423">
this.converter = builder.converter;</span>
-<span class="source-line-no">424</span><span id="line-424"> }</span>
-<span class="source-line-no">425</span><span id="line-425"></span>
-<span class="source-line-no">426</span><span id="line-426"> /**</span>
-<span class="source-line-no">427</span><span id="line-427"> * Creates an
Option using the specified parameters.</span>
-<span class="source-line-no">428</span><span id="line-428"> *</span>
-<span class="source-line-no">429</span><span id="line-429"> * @param
option short representation of the option.</span>
-<span class="source-line-no">430</span><span id="line-430"> * @param
hasArg specifies whether the Option takes an argument or not.</span>
-<span class="source-line-no">431</span><span id="line-431"> * @param
description describes the function of the option.</span>
-<span class="source-line-no">432</span><span id="line-432"> *</span>
-<span class="source-line-no">433</span><span id="line-433"> * @throws
IllegalArgumentException if there are any non valid Option characters in {@code
opt}.</span>
-<span class="source-line-no">434</span><span id="line-434"> */</span>
-<span class="source-line-no">435</span><span id="line-435"> public
Option(final String option, final boolean hasArg, final String description)
throws IllegalArgumentException {</span>
-<span class="source-line-no">436</span><span id="line-436">
this(option, null, hasArg, description);</span>
-<span class="source-line-no">437</span><span id="line-437"> }</span>
-<span class="source-line-no">438</span><span id="line-438"></span>
-<span class="source-line-no">439</span><span id="line-439"> /**</span>
-<span class="source-line-no">440</span><span id="line-440"> * Creates an
Option using the specified parameters. The option does not take an
argument.</span>
-<span class="source-line-no">441</span><span id="line-441"> *</span>
-<span class="source-line-no">442</span><span id="line-442"> * @param
option short representation of the option.</span>
-<span class="source-line-no">443</span><span id="line-443"> * @param
description describes the function of the option.</span>
+<span class="source-line-no">407</span><span id="line-407"> /** Specifies
whether this option is required to be present. */</span>
+<span class="source-line-no">408</span><span id="line-408"> private boolean
required;</span>
+<span class="source-line-no">409</span><span id="line-409"></span>
+<span class="source-line-no">410</span><span id="line-410"> /** Specifies
the version when this option was added. May be null */</span>
+<span class="source-line-no">411</span><span id="line-411"> private String
since;</span>
+<span class="source-line-no">412</span><span id="line-412"></span>
+<span class="source-line-no">413</span><span id="line-413"> /** The type of
this Option. */</span>
+<span class="source-line-no">414</span><span id="line-414"> private
Class<?> type = String.class;</span>
+<span class="source-line-no">415</span><span id="line-415"></span>
+<span class="source-line-no">416</span><span id="line-416"> /** The list of
argument values. **/</span>
+<span class="source-line-no">417</span><span id="line-417"> private
List<String> values = new ArrayList<>();</span>
+<span class="source-line-no">418</span><span id="line-418"></span>
+<span class="source-line-no">419</span><span id="line-419"> /** The
character that is the value separator. */</span>
+<span class="source-line-no">420</span><span id="line-420"> private char
valueSeparator;</span>
+<span class="source-line-no">421</span><span id="line-421"></span>
+<span class="source-line-no">422</span><span id="line-422"> /**</span>
+<span class="source-line-no">423</span><span id="line-423"> * Private
constructor used by the nested Builder class.</span>
+<span class="source-line-no">424</span><span id="line-424"> *</span>
+<span class="source-line-no">425</span><span id="line-425"> * @param
builder builder used to create this option.</span>
+<span class="source-line-no">426</span><span id="line-426"> */</span>
+<span class="source-line-no">427</span><span id="line-427"> private
Option(final Builder builder) {</span>
+<span class="source-line-no">428</span><span id="line-428">
this.argName = builder.argName;</span>
+<span class="source-line-no">429</span><span id="line-429">
this.description = builder.description;</span>
+<span class="source-line-no">430</span><span id="line-430">
this.longOption = builder.longOption;</span>
+<span class="source-line-no">431</span><span id="line-431">
this.argCount = builder.argCount;</span>
+<span class="source-line-no">432</span><span id="line-432"> this.option
= builder.option;</span>
+<span class="source-line-no">433</span><span id="line-433">
this.optionalArg = builder.optionalArg;</span>
+<span class="source-line-no">434</span><span id="line-434">
this.deprecated = builder.deprecated;</span>
+<span class="source-line-no">435</span><span id="line-435">
this.required = builder.required;</span>
+<span class="source-line-no">436</span><span id="line-436"> this.since
= builder.since;</span>
+<span class="source-line-no">437</span><span id="line-437"> this.type =
builder.type;</span>
+<span class="source-line-no">438</span><span id="line-438">
this.valueSeparator = builder.valueSeparator;</span>
+<span class="source-line-no">439</span><span id="line-439">
this.converter = builder.converter;</span>
+<span class="source-line-no">440</span><span id="line-440"> }</span>
+<span class="source-line-no">441</span><span id="line-441"></span>
+<span class="source-line-no">442</span><span id="line-442"> /**</span>
+<span class="source-line-no">443</span><span id="line-443"> * Creates an
Option using the specified parameters.</span>
<span class="source-line-no">444</span><span id="line-444"> *</span>
-<span class="source-line-no">445</span><span id="line-445"> * @throws
IllegalArgumentException if there are any non valid Option characters in {@code
opt}.</span>
-<span class="source-line-no">446</span><span id="line-446"> */</span>
-<span class="source-line-no">447</span><span id="line-447"> public
Option(final String option, final String description) throws
IllegalArgumentException {</span>
-<span class="source-line-no">448</span><span id="line-448">
this(option, null, false, description);</span>
-<span class="source-line-no">449</span><span id="line-449"> }</span>
-<span class="source-line-no">450</span><span id="line-450"></span>
-<span class="source-line-no">451</span><span id="line-451"> /**</span>
-<span class="source-line-no">452</span><span id="line-452"> * Creates an
Option using the specified parameters.</span>
-<span class="source-line-no">453</span><span id="line-453"> *</span>
-<span class="source-line-no">454</span><span id="line-454"> * @param
option short representation of the option.</span>
-<span class="source-line-no">455</span><span id="line-455"> * @param
longOption the long representation of the option.</span>
-<span class="source-line-no">456</span><span id="line-456"> * @param
hasArg specifies whether the Option takes an argument or not.</span>
-<span class="source-line-no">457</span><span id="line-457"> * @param
description describes the function of the option.</span>
-<span class="source-line-no">458</span><span id="line-458"> *</span>
-<span class="source-line-no">459</span><span id="line-459"> * @throws
IllegalArgumentException if there are any non valid Option characters in {@code
opt}.</span>
-<span class="source-line-no">460</span><span id="line-460"> */</span>
-<span class="source-line-no">461</span><span id="line-461"> public
Option(final String option, final String longOption, final boolean hasArg,
final String description) throws IllegalArgumentException {</span>
-<span class="source-line-no">462</span><span id="line-462"> // ensure
that the option is valid</span>
-<span class="source-line-no">463</span><span id="line-463">
this.deprecated = null;</span>
-<span class="source-line-no">464</span><span id="line-464"> this.option
= OptionValidator.validate(option);</span>
-<span class="source-line-no">465</span><span id="line-465">
this.longOption = longOption;</span>
-<span class="source-line-no">466</span><span id="line-466"> // if
hasArg is set then the number of arguments is 1</span>
-<span class="source-line-no">467</span><span id="line-467"> if (hasArg)
{</span>
-<span class="source-line-no">468</span><span id="line-468">
this.argCount = 1;</span>
-<span class="source-line-no">469</span><span id="line-469"> }</span>
-<span class="source-line-no">470</span><span id="line-470">
this.description = description;</span>
-<span class="source-line-no">471</span><span id="line-471"> }</span>
-<span class="source-line-no">472</span><span id="line-472"></span>
-<span class="source-line-no">473</span><span id="line-473"> /**</span>
-<span class="source-line-no">474</span><span id="line-474"> * Tests
whether the option can accept more arguments.</span>
-<span class="source-line-no">475</span><span id="line-475"> *</span>
-<span class="source-line-no">476</span><span id="line-476"> * @return
false if the maximum number of arguments is reached.</span>
-<span class="source-line-no">477</span><span id="line-477"> * @since
1.3</span>
-<span class="source-line-no">478</span><span id="line-478"> */</span>
-<span class="source-line-no">479</span><span id="line-479"> boolean
acceptsArg() {</span>
-<span class="source-line-no">480</span><span id="line-480"> return
(hasArg() || hasArgs() || hasOptionalArg()) && (argCount <= 0 ||
values.size() < argCount);</span>
-<span class="source-line-no">481</span><span id="line-481"> }</span>
-<span class="source-line-no">482</span><span id="line-482"></span>
-<span class="source-line-no">483</span><span id="line-483"> /**</span>
-<span class="source-line-no">484</span><span id="line-484"> * Adds the
value to this Option. If the number of arguments is greater than zero and there
is enough space in the list then add the value. Otherwise, throw</span>
-<span class="source-line-no">485</span><span id="line-485"> * a runtime
exception.</span>
-<span class="source-line-no">486</span><span id="line-486"> *</span>
-<span class="source-line-no">487</span><span id="line-487"> * @param value
The value to be added to this Option.</span>
-<span class="source-line-no">488</span><span id="line-488"> */</span>
-<span class="source-line-no">489</span><span id="line-489"> private void
add(final String value) {</span>
-<span class="source-line-no">490</span><span id="line-490"> if
(!acceptsArg()) {</span>
-<span class="source-line-no">491</span><span id="line-491"> throw
new IllegalArgumentException("Cannot add value, list full.");</span>
-<span class="source-line-no">492</span><span id="line-492"> }</span>
-<span class="source-line-no">493</span><span id="line-493"> // store
value</span>
-<span class="source-line-no">494</span><span id="line-494">
values.add(value);</span>
-<span class="source-line-no">495</span><span id="line-495"> }</span>
-<span class="source-line-no">496</span><span id="line-496"></span>
-<span class="source-line-no">497</span><span id="line-497"> /**</span>
-<span class="source-line-no">498</span><span id="line-498"> * This method
is not intended to be used. It was a piece of internal API that was made public
in 1.0. It currently throws an UnsupportedOperationException.</span>
-<span class="source-line-no">499</span><span id="line-499"> *</span>
-<span class="source-line-no">500</span><span id="line-500"> * @param value
the value to add.</span>
-<span class="source-line-no">501</span><span id="line-501"> * @return
always throws an {@link UnsupportedOperationException}.</span>
-<span class="source-line-no">502</span><span id="line-502"> * @throws
UnsupportedOperationException always.</span>
-<span class="source-line-no">503</span><span id="line-503"> * @deprecated
Unused.</span>
+<span class="source-line-no">445</span><span id="line-445"> * @param
option short representation of the option.</span>
+<span class="source-line-no">446</span><span id="line-446"> * @param
hasArg specifies whether the Option takes an argument or not.</span>
+<span class="source-line-no">447</span><span id="line-447"> * @param
description describes the function of the option.</span>
+<span class="source-line-no">448</span><span id="line-448"> *</span>
+<span class="source-line-no">449</span><span id="line-449"> * @throws
IllegalArgumentException if there are any non valid Option characters in {@code
opt}.</span>
+<span class="source-line-no">450</span><span id="line-450"> */</span>
+<span class="source-line-no">451</span><span id="line-451"> public
Option(final String option, final boolean hasArg, final String description)
throws IllegalArgumentException {</span>
+<span class="source-line-no">452</span><span id="line-452">
this(option, null, hasArg, description);</span>
+<span class="source-line-no">453</span><span id="line-453"> }</span>
+<span class="source-line-no">454</span><span id="line-454"></span>
+<span class="source-line-no">455</span><span id="line-455"> /**</span>
+<span class="source-line-no">456</span><span id="line-456"> * Creates an
Option using the specified parameters. The option does not take an
argument.</span>
+<span class="source-line-no">457</span><span id="line-457"> *</span>
+<span class="source-line-no">458</span><span id="line-458"> * @param
option short representation of the option.</span>
+<span class="source-line-no">459</span><span id="line-459"> * @param
description describes the function of the option.</span>
+<span class="source-line-no">460</span><span id="line-460"> *</span>
+<span class="source-line-no">461</span><span id="line-461"> * @throws
IllegalArgumentException if there are any non valid Option characters in {@code
opt}.</span>
+<span class="source-line-no">462</span><span id="line-462"> */</span>
+<span class="source-line-no">463</span><span id="line-463"> public
Option(final String option, final String description) throws
IllegalArgumentException {</span>
+<span class="source-line-no">464</span><span id="line-464">
this(option, null, false, description);</span>
+<span class="source-line-no">465</span><span id="line-465"> }</span>
+<span class="source-line-no">466</span><span id="line-466"></span>
+<span class="source-line-no">467</span><span id="line-467"> /**</span>
+<span class="source-line-no">468</span><span id="line-468"> * Creates an
Option using the specified parameters.</span>
+<span class="source-line-no">469</span><span id="line-469"> *</span>
+<span class="source-line-no">470</span><span id="line-470"> * @param
option short representation of the option.</span>
+<span class="source-line-no">471</span><span id="line-471"> * @param
longOption the long representation of the option.</span>
+<span class="source-line-no">472</span><span id="line-472"> * @param
hasArg specifies whether the Option takes an argument or not.</span>
+<span class="source-line-no">473</span><span id="line-473"> * @param
description describes the function of the option.</span>
+<span class="source-line-no">474</span><span id="line-474"> *</span>
+<span class="source-line-no">475</span><span id="line-475"> * @throws
IllegalArgumentException if there are any non valid Option characters in {@code
opt}.</span>
+<span class="source-line-no">476</span><span id="line-476"> */</span>
+<span class="source-line-no">477</span><span id="line-477"> public
Option(final String option, final String longOption, final boolean hasArg,
final String description) throws IllegalArgumentException {</span>
+<span class="source-line-no">478</span><span id="line-478"> // ensure
that the option is valid</span>
+<span class="source-line-no">479</span><span id="line-479">
this.deprecated = null;</span>
+<span class="source-line-no">480</span><span id="line-480"> this.option
= OptionValidator.validate(option);</span>
+<span class="source-line-no">481</span><span id="line-481">
this.longOption = longOption;</span>
+<span class="source-line-no">482</span><span id="line-482"> // if
hasArg is set then the number of arguments is 1</span>
+<span class="source-line-no">483</span><span id="line-483"> if (hasArg)
{</span>
+<span class="source-line-no">484</span><span id="line-484">
this.argCount = 1;</span>
+<span class="source-line-no">485</span><span id="line-485"> }</span>
+<span class="source-line-no">486</span><span id="line-486">
this.description = description;</span>
+<span class="source-line-no">487</span><span id="line-487"> }</span>
+<span class="source-line-no">488</span><span id="line-488"></span>
+<span class="source-line-no">489</span><span id="line-489"> /**</span>
+<span class="source-line-no">490</span><span id="line-490"> * Tests
whether the option can accept more arguments.</span>
+<span class="source-line-no">491</span><span id="line-491"> *</span>
+<span class="source-line-no">492</span><span id="line-492"> * @return
false if the maximum number of arguments is reached.</span>
+<span class="source-line-no">493</span><span id="line-493"> * @since
1.3</span>
+<span class="source-line-no">494</span><span id="line-494"> */</span>
+<span class="source-line-no">495</span><span id="line-495"> boolean
acceptsArg() {</span>
+<span class="source-line-no">496</span><span id="line-496"> return
(hasArg() || hasArgs() || hasOptionalArg()) && (argCount <= 0 ||
values.size() < argCount);</span>
+<span class="source-line-no">497</span><span id="line-497"> }</span>
+<span class="source-line-no">498</span><span id="line-498"></span>
+<span class="source-line-no">499</span><span id="line-499"> /**</span>
+<span class="source-line-no">500</span><span id="line-500"> * Adds the
value to this Option. If the number of arguments is greater than zero and there
is enough space in the list then add the value. Otherwise, throw</span>
+<span class="source-line-no">501</span><span id="line-501"> * a runtime
exception.</span>
+<span class="source-line-no">502</span><span id="line-502"> *</span>
+<span class="source-line-no">503</span><span id="line-503"> * @param value
The value to be added to this Option.</span>
<span class="source-line-no">504</span><span id="line-504"> */</span>
-<span class="source-line-no">505</span><span id="line-505">
@Deprecated</span>
-<span class="source-line-no">506</span><span id="line-506"> public boolean
addValue(final String value) {</span>
-<span class="source-line-no">507</span><span id="line-507"> throw new
UnsupportedOperationException(</span>
-<span class="source-line-no">508</span><span id="line-508">
"The addValue method is not intended for client use. Subclasses should use the
processValue method instead.");</span>
-<span class="source-line-no">509</span><span id="line-509"> }</span>
-<span class="source-line-no">510</span><span id="line-510"></span>
-<span class="source-line-no">511</span><span id="line-511"> /**</span>
-<span class="source-line-no">512</span><span id="line-512"> * Clears the
Option values. After a parse is complete, these are left with data in them and
they need clearing if another parse is done.</span>
-<span class="source-line-no">513</span><span id="line-513"> *</span>
-<span class="source-line-no">514</span><span id="line-514"> * See: <a
href="https://issues.apache.org/jira/browse/CLI-71">CLI-71</a></span>
-<span class="source-line-no">515</span><span id="line-515"> */</span>
-<span class="source-line-no">516</span><span id="line-516"> void
clearValues() {</span>
-<span class="source-line-no">517</span><span id="line-517">
values.clear();</span>
-<span class="source-line-no">518</span><span id="line-518"> }</span>
-<span class="source-line-no">519</span><span id="line-519"></span>
-<span class="source-line-no">520</span><span id="line-520"> /**</span>
-<span class="source-line-no">521</span><span id="line-521"> * A rather odd
clone method - due to incorrect code in 1.0 it is public and in 1.1 rather than
throwing a CloneNotSupportedException it throws a</span>
-<span class="source-line-no">522</span><span id="line-522"> *
RuntimeException so as to maintain backwards compatible at the API level.</span>
-<span class="source-line-no">523</span><span id="line-523"> *</span>
-<span class="source-line-no">524</span><span id="line-524"> * After
calling this method, it is very likely you will want to call
clearValues().</span>
-<span class="source-line-no">525</span><span id="line-525"> *</span>
-<span class="source-line-no">526</span><span id="line-526"> * @return a
clone of this Option instance.</span>
-<span class="source-line-no">527</span><span id="line-527"> * @throws
RuntimeException if a {@link CloneNotSupportedException} has been thrown by
{@code super.clone()}.</span>
-<span class="source-line-no">528</span><span id="line-528"> */</span>
-<span class="source-line-no">529</span><span id="line-529"> @Override</span>
-<span class="source-line-no">530</span><span id="line-530"> public Object
clone() {</span>
-<span class="source-line-no">531</span><span id="line-531"> try {</span>
-<span class="source-line-no">532</span><span id="line-532"> final
Option option = (Option) super.clone();</span>
-<span class="source-line-no">533</span><span id="line-533">
option.values = new ArrayList<>(values);</span>
-<span class="source-line-no">534</span><span id="line-534"> return
option;</span>
-<span class="source-line-no">535</span><span id="line-535"> } catch
(final CloneNotSupportedException e) {</span>
-<span class="source-line-no">536</span><span id="line-536"> throw
new UnsupportedOperationException(e.getMessage(), e);</span>
-<span class="source-line-no">537</span><span id="line-537"> }</span>
-<span class="source-line-no">538</span><span id="line-538"> }</span>
-<span class="source-line-no">539</span><span id="line-539"></span>
-<span class="source-line-no">540</span><span id="line-540"> @Override</span>
-<span class="source-line-no">541</span><span id="line-541"> public boolean
equals(final Object obj) {</span>
-<span class="source-line-no">542</span><span id="line-542"> if (this ==
obj) {</span>
-<span class="source-line-no">543</span><span id="line-543"> return
true;</span>
-<span class="source-line-no">544</span><span id="line-544"> }</span>
-<span class="source-line-no">545</span><span id="line-545"> if (!(obj
instanceof Option)) {</span>
-<span class="source-line-no">546</span><span id="line-546"> return
false;</span>
-<span class="source-line-no">547</span><span id="line-547"> }</span>
-<span class="source-line-no">548</span><span id="line-548"> final
Option other = (Option) obj;</span>
-<span class="source-line-no">549</span><span id="line-549"> return
Objects.equals(longOption, other.longOption) && Objects.equals(option,
other.option);</span>
-<span class="source-line-no">550</span><span id="line-550"> }</span>
-<span class="source-line-no">551</span><span id="line-551"></span>
-<span class="source-line-no">552</span><span id="line-552"> /**</span>
-<span class="source-line-no">553</span><span id="line-553"> * Gets the
display name for the argument value.</span>
-<span class="source-line-no">554</span><span id="line-554"> *</span>
-<span class="source-line-no">555</span><span id="line-555"> * @return the
display name for the argument value.</span>
-<span class="source-line-no">556</span><span id="line-556"> */</span>
-<span class="source-line-no">557</span><span id="line-557"> public String
getArgName() {</span>
-<span class="source-line-no">558</span><span id="line-558"> return
argName;</span>
-<span class="source-line-no">559</span><span id="line-559"> }</span>
-<span class="source-line-no">560</span><span id="line-560"></span>
-<span class="source-line-no">561</span><span id="line-561"> /**</span>
-<span class="source-line-no">562</span><span id="line-562"> * Gets the
number of argument values this Option can take.</span>
-<span class="source-line-no">563</span><span id="line-563"> *</span>
-<span class="source-line-no">564</span><span id="line-564"> *
<p></span>
-<span class="source-line-no">565</span><span id="line-565"> * A value
equal to the constant {@link #UNINITIALIZED} (= -1) indicates the number of
arguments has not been specified. A value equal to the constant</span>
-<span class="source-line-no">566</span><span id="line-566"> * {@link
#UNLIMITED_VALUES} (= -2) indicates that this options takes an unlimited amount
of values.</span>
-<span class="source-line-no">567</span><span id="line-567"> *
</p></span>
-<span class="source-line-no">568</span><span id="line-568"> *</span>
-<span class="source-line-no">569</span><span id="line-569"> * @return num
the number of argument values.</span>
-<span class="source-line-no">570</span><span id="line-570"> * @see
#UNINITIALIZED</span>
-<span class="source-line-no">571</span><span id="line-571"> * @see
#UNLIMITED_VALUES</span>
+<span class="source-line-no">505</span><span id="line-505"> private void
add(final String value) {</span>
+<span class="source-line-no">506</span><span id="line-506"> if
(!acceptsArg()) {</span>
+<span class="source-line-no">507</span><span id="line-507"> throw
new IllegalArgumentException("Cannot add value, list full.");</span>
+<span class="source-line-no">508</span><span id="line-508"> }</span>
+<span class="source-line-no">509</span><span id="line-509"> // store
value</span>
+<span class="source-line-no">510</span><span id="line-510">
values.add(value);</span>
+<span class="source-line-no">511</span><span id="line-511"> }</span>
+<span class="source-line-no">512</span><span id="line-512"></span>
+<span class="source-line-no">513</span><span id="line-513"> /**</span>
[... 938 lines stripped ...]