/**
  * @param IOption $option
  * @param array $groupedArgs
  * @param bool $strict
  *
  * @return array
  * @throws InvalidOptionValueException
  * @throws MissingOptionValueException
  */
 public function matchOption(IOption $option, array $groupedArgs, $strict = true)
 {
     $groupedArgs = $this->argumentsParser->mergeNameAndAlias($groupedArgs, $option->getName(), $option->getAlias());
     if ($option->isIncremental()) {
         $groupedArgs = $this->matchIncrementalOption($option, $groupedArgs, $strict);
     } else {
         if ($option->isBoolean()) {
             $groupedArgs = $this->matchBooleanOption($option, $groupedArgs, $strict);
         } else {
             $groupedArgs = $this->matchRegularOption($option, $groupedArgs, $strict);
         }
     }
     return $groupedArgs;
 }