/**
  * Constructor accepts message string and any number of parameters, which will be used as string replacements for
  * message string (unless an instance of \Throwable is found, in which case it is passed to parent as previous).
  *
  * @param null|string $message
  * @param mixed       ...$params
  */
 public function __construct(string $message = null, ...$params)
 {
     parent::__construct($this->compileMessage($message ?: $this->defaultMessage(), $params), null, $this->compileThrown($params));
 }