public function render($name, $params = [])
 {
     $params = $this->mergeParams($name, $params);
     $template = $this->resolver->resolve($name);
     if (!$template) {
         throw new Exception\TemplateNotFoundException("Couldn't resolve '{$name}'");
     }
     if ($template->isCompiled()) {
         $compiled = (string) $template;
     } else {
         try {
             $compiled = $this->handlebars->precompile((string) $template);
         } catch (\V8JsScriptException $e) {
             throw new Exception\TemplateCompilationException("Error compiling '{$name}'", 0, $e);
         }
         if ($this->resolver instanceof SavingResolverInterface) {
             $this->resolver->save($template->getKey(), $compiled);
         }
     }
     try {
         $template = $this->handlebars->template($compiled);
         return $template($params);
     } catch (\V8JsScriptException $e) {
         throw new Exception\TemplateExecutionException("Error running '{$name}'", 0, $e);
     }
 }
 private function registerPartials(ResolverInterface $resolver, Handlebars $handlebars, $partials)
 {
     foreach ($partials as $name => $partial) {
         $template = $resolver->resolve($partial);
         if ($template) {
             if ($template->isCompiled()) {
                 $compiled = $template;
             } else {
                 $compiled = $handlebars->precompile((string) $template);
                 if ($resolver instanceof SavingResolverInterface) {
                     $resolver->save($partial, $compiled);
                 }
             }
             $handlebars->registerPartial($name, $handlebars->template($compiled));
         }
     }
 }