/**
  * Constructor.
  *
  * Composes the Mustache instance. If the AggregateResolver composed by
  * Mustache does not compose a DefaultResolver, one is created and attached
  * to the Aggregate.
  *
  * The first DefaultResolver encountered in the Aggregate is then used as
  * the internal resolver for attaching paths.
  *
  * @param Mustache $renderer
  */
 public function __construct(Mustache $renderer)
 {
     $this->renderer = $renderer;
     $resolver = $renderer->getResolver();
     if (!$resolver->hasType(DefaultResolver::class)) {
         $resolver->attach($this->createDefaultResolver(), 0);
     } else {
         $this->extractDefaultResolver($resolver);
     }
     // Register default parameter listeners.
     $this->paramListeners[] = function ($params, array $defaults) {
         return $this->mergeArrayParams($params, $defaults);
     };
     $this->paramListeners[] = function ($params, array $defaults) {
         return $this->mergeObjectParams($params, $defaults);
     };
 }