public function addOption(Option $spec)
{
$this->data[$spec->getId()] = $spec;
if ($spec->long) {
$this->longOptions[$spec->long] = $spec;
}
if ($spec->short) {
$this->shortOptions[$spec->short] = $spec;
}
$this->options[] = $spec;
if (!$spec->long && !$spec->short) {
throw new Exception('Neither long option name nor short name is not given.');
}
}