public function withOption($name, $description, $default = '', array $choices = [])
    {
        $this->choices[$name] = $choices;

        return $this->addOption($name, null, InputOption::VALUE_OPTIONAL, $description, $default);
    }
public function withOption($name, $description, $default = '', array $choices = [])
    {
        $this->choices[$name] = $choices;

        return $this->addOption($name, null, InputOption::VALUE_OPTIONAL, $description, $default);
    }
public function withOption ( $ name , $ description , $ default = '' , array $ choices = [ ] ) { $ this -> choices [ $ name ] = $ choices ; return $ this -> addOption ( $ name , null , InputOption :: VALUE_OPTIONAL , $ description , $ default ) ; }
With optional option

@param string $name
@param string $description
@param mixed  $default Default must be empty string to check if the user has provided a value for option
@param array  $choices

@return self
With optional option