function listSpec()
{
$flags = [];
$required = [];
$optional = [];
$positional = [];
foreach ($this->args->getSpec() as $spec) {
if (is_numeric($spec[0])) {
$positional[] = $spec;
} elseif ($spec[3] & Args::REQUIRED) {
$required[] = $spec;
} elseif ($spec[3] & (Args::OPTARG | Args::REQARG)) {
$optional[] = $spec;
} else {
$flags[] = $spec;
}
}
return [$flags, $required, $optional, $positional] + compact("flags", "required", "optional", "positional");
}