/**
  * Generates the lexer cache on fly.
  *
  * @param \FSHL\Lexer $lexer
  *
  * @return \FSHL\Highlighter
  */
 private function generateCache(Lexer $lexer)
 {
     $generator = new Generator($lexer);
     try {
         $generator->saveToCache();
     } catch (\RuntimeException $e) {
         $file = tempnam(sys_get_temp_dir(), 'fshl');
         file_put_contents($file, $generator->getSource());
         require_once $file;
         unlink($file);
     }
     $lexerName = $lexer->getLanguage();
     $lexerCacheClass = '\\FSHL\\Lexer\\Cache\\' . $lexerName;
     $this->lexers[$lexerName] = new $lexerCacheClass();
     $this->lexer = $this->lexers[$lexerName];
     return $this;
 }