protected function callCommandMethod()
    {
        $preparedArguments = [];
        /** @var Argument $argument */
        foreach ($this->arguments as $argument) {
            $preparedArguments[] = $argument->getValue();
        }

        $command = new Command(get_class($this), $this->request->getControllerCommandName());
        if ($command->isDeprecated()) {
            $suggestedCommandMessage = '';

            $relatedCommandIdentifiers = $command->getRelatedCommandIdentifiers();
            if ($relatedCommandIdentifiers !== []) {
                $suggestedCommandMessage = sprintf(
                    ', use the following command%s instead: %s',
                    count($relatedCommandIdentifiers) > 1 ? 's' : '',
                    implode(', ', $relatedCommandIdentifiers)
                );
            }
            $this->outputLine('<b>Warning:</b> This command is <b>DEPRECATED</b>%s%s', [$suggestedCommandMessage, PHP_EOL]);
        }

        $commandResult = call_user_func_array([$this, $this->commandMethodName], $preparedArguments);

        if (is_string($commandResult) && strlen($commandResult) > 0) {
            $this->response->appendContent($commandResult);
        } elseif (is_object($commandResult) && method_exists($commandResult, '__toString')) {
            $this->response->appendContent((string)$commandResult);
        }
    }