/**
  * Constructor.
  *
  * @param Stream     $stream
  * @param Token|null $expected
  */
 public function __construct(Stream $stream, Token $expected = null)
 {
     $this->actual = $stream->current();
     $this->expected = $expected;
     $this->tokenLine = $this->actual->getLine();
     $message = sprintf('Unexpected token %s at line %d ("%s").', (string) $this->actual, $this->tokenLine, $stream->humanize());
     if ($this->expected !== null) {
         $message = sprintf('%s Expects token %s.', $message, (string) $this->expected);
     }
     parent::__construct($message);
 }