public function addOption($name, $shortcut = null, $mode = null, $description = '', $default = null)
    {
        if (empty($name)) {
            throw new \InvalidArgumentException('An option name cannot be empty.');
        }

        if (null === $mode) {
            $mode = self::VALUE_NONE;
        } elseif (!is_int($mode) || $mode > 15 || $mode < 1) {
            throw new \InvalidArgumentException(sprintf('Option mode "%s" is not valid.', $mode));
        }

        $this->options[] = [$name, $shortcut, $mode, $description, $default];
    }