public static function displayConsoleException(\Throwable $Throwable){

		ob_start();

		echo PHP_EOL . ' ';

		echo(($Throwable instanceof PHPAssertionFailed) ?
			'Assertion Failed' : 'Uncaught ' . self::getShortName(
				get_class(
					$Throwable
				)
			));
		echo ' <' . basename($Throwable->getFile()) . ':' .
			$Throwable->getLine() . '>';

		echo PHP_EOL . PHP_EOL . '  ';

		// Message

		if($Throwable instanceof PHPAssertionFailed){

			$message = $Throwable->getExpression();
			if($message == ''){
				$message = 'false';
			}
		}
		else{

			$message = $Throwable->getMessage();
		}

		echo wordwrap($message, self::CONSOLE_WIDTH - 2, PHP_EOL . '  ');

		echo PHP_EOL . PHP_EOL . ' Stack Trace:' . PHP_EOL . PHP_EOL;

		// Stack trace

		if($Throwable instanceof BaseException ||
			$Throwable instanceof PHPErrorException){

			/** @noinspection PhpUndefinedMethodInspection */

			$trace = $Throwable->getStackTrace();
		}
		else{

			$trace = array_reverse($Throwable->getTrace());
		}

		$trace_empty = [
			'class' => '',
			'type' => '',
			'function' => '',
			'file' => '{unknown}',
			'line' => 0
		];

		foreach($trace as $key => $trace_item){

			$trace_item = array_merge($trace_empty, $trace_item);
			$trace_item['file'] = basename($trace_item['file']);

			if($trace_item['function'] != '{closure}'){

				$trace_item['function'] .= '()';
			}

			$key++;

			echo str_pad("  $key. ", 6, ' ');
			echo self::getShortName($trace_item['class']) .
				$trace_item['type'] .
				$trace_item['function'];
			echo " <{$trace_item['file']}:{$trace_item['line']}>" . PHP_EOL;
		}

		return ob_get_clean();
	}