private function renderTrace(ConsoleOutputContract $output, Throwable $exception): void
    {
        $output->writeln('<comment>Exception trace:</comment>');
        $output->writeln('');

        $count = 0;

        foreach ($this->getFrames($exception) as $i => $frame) {
            if ($i > static::VERBOSITY_NORMAL_FRAMES &&
                $output->getVerbosity() < ConsoleOutputContract::VERBOSITY_VERBOSE
            ) {
                $output->writeln('');
                $output->writeln(
                    '<info>Please use the argument <fg=red>-v</> to see all trace.</info>'
                );

                break;
            }

            $class    = isset($frame['class']) ? $frame['class'] . '::' : '';
            $function = $frame['function'] ?? '';

            if ($class !== '' && $function !== '') {
                $output->writeln(\sprintf(
                    '<comment><fg=cyan>%s</>%s%s(%s)</comment>',
                    \str_pad((string) ((int) $i + 1), 4, ' '),
                    $class,
                    $function,
                    isset($frame['args']) ? self::formatsArgs($frame['args']) : ''
                ));
            }

            if (isset($frame['file'], $frame['line'])) {
                $output->writeln(\sprintf(
                    '    <fg=green>%s</>:<fg=green>%s</>',
                    $frame['file'],
                    $frame['line']
                ));
            }

            if ($count !== 4) {
                $output->writeln('');
            }

            $count++;
        }
    }