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&lt;?&gt; 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&lt;?&gt; 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 &amp;&amp; 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">         * 
&lt;p&gt;</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">         * 
&lt;/p&gt;</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&lt;?, ?&gt; 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 &amp;&amp; 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&lt;?&gt; 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">         * 
&lt;p&gt;</span>
-<span class="source-line-no">308</span><span id="line-308">         * 
&lt;b&gt;Example:&lt;/b&gt;</span>
-<span class="source-line-no">309</span><span id="line-309">         * 
&lt;/p&gt;</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 &amp;&amp; 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">         * 
&lt;p&gt;</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">         * 
&lt;/p&gt;</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&lt;?, ?&gt; 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 &amp;&amp; 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&lt;?&gt; 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">         * 
&lt;pre&gt;</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">         * 
&lt;/pre&gt;</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">         * 
&lt;p&gt;</span>
+<span class="source-line-no">320</span><span id="line-320">         * 
&lt;b&gt;Example:&lt;/b&gt;</span>
+<span class="source-line-no">321</span><span id="line-321">         * 
&lt;/p&gt;</span>
+<span class="source-line-no">322</span><span id="line-322">         *</span>
+<span class="source-line-no">323</span><span id="line-323">         * 
&lt;pre&gt;</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">         * 
&lt;/pre&gt;</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&lt;?, ?&gt; 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">     * 
&lt;p&gt;</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">     * 
&lt;/p&gt;</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&lt;?, ?&gt; 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">     * 
&lt;p&gt;</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">     * 
&lt;/p&gt;</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&lt;?&gt; 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&lt;String&gt; values = new ArrayList&lt;&gt;();</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&lt;?&gt; 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&lt;String&gt; values = new ArrayList&lt;&gt;();</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()) &amp;&amp; (argCount &lt;= 0 || 
values.size() &lt; 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()) &amp;&amp; (argCount &lt;= 0 || 
values.size() &lt; 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: &lt;a 
href="https://issues.apache.org/jira/browse/CLI-71"&gt;CLI-71&lt;/a&gt;</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&lt;&gt;(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) &amp;&amp; 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">     * 
&lt;p&gt;</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">     * 
&lt;/p&gt;</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 ...]


Reply via email to