/**
* <p>API for the Ceylon toolset.</p>
*
* <h3>Terminology</h3>
* <p>Consider the following hypothetical command line:</p>
* <pre>ceylon example --foo --bar=A -c -def baz</pre>
* <p>In the above</p>
* <dl>
* <dt><em>program name</em></dt>
* <dd>is the first element of the command line, {@code ceylon} in the
* example<dd>
* <dt><em>arguments</em></dt>
* <dd>can refer to everything following the <em>program name</em>, but more
* usually refers to non-<em>option</em> arguments.<dd>
* <dt><em>options</em></dt>
* <dd>are <em>arguments</em> which begin with a {@code --} or a {@code -}
* and appear before the first <em>end of options</em> indicator
* (conventionally a {@code --} on its own) if any.
* An end of options indicator is not illustrated in the example)</dd>
* <dt><em>pure options</em></dt>
* <dd>are <em>options</em> that do not accept a value</dd>
* <dt><em>option arguments</em></dt>
* <dd>are <em>options</em> that do accept a value. This term can also refer to the
* value of an option argument.</dd>
* <dt><em>long options</em></dt>
* <dd>are <em>options</em> beginning with a {@code --} ({@code --foo} and
* {@code --bar} in the example).</dd>
* <dt><em>short options</em></dt>
* <dd>are <em>options</em> beginning with a single {@code -}. The simple
* case is illustrated by {@code -c} in the above example. Short options are
* always a single character, but <em>pure</em> short options can be
* combined with a following short option. In such a combination only the
* last short option in the group is allowed to be an option argument.
* Short option arguments (that is to say the value of the short option
* argument) may be merged with the short option itself, or follow it
* as a separate argument.
* So there are multiple interpretations of the {@code -def} in the
* example above:
* <ol>
* <li>{@code d} is a short option argument whose value is {@code ef}</li>
* <li>{@code d} is a short pure option and {@code e} is a short option
* argument whose value is {@code f}</li>
* <li>{@code d} and {@code e} are short pure options and {@code f} is a
* short option argument whose value is {@code baz}</li>
* <li>{@code d}, {@code e} and {@code f} are short pure options and
* {@code baz} is a plain argument (not an option's argument).</li>
* </ol>
* </dd>
*
* <h3>Tools</h3>
* <p>A <em>tool</em> is a class which implements {@link Tool} and adheres
* to the conventions it requires.</p>
*/
package com.redhat.ceylon.common.tool;