/**
  * @param array $parameters
  *
  * @return ViewReference[]|\SimpleXMLElement[]
  */
 public function getReferencesByParameters($parameters, $transform = true, $keepChildren = false)
 {
     $viewsReferences = [];
     /** @var \SimpleXmlElement[] $xmlReferences */
     if ($xmlReferences = $this->driver->readCache()->xpath(ViewReferenceHelper::buildXpath($parameters))) {
         foreach ($xmlReferences as $reference) {
             if ($transform === true) {
                 $transformViewReferenceFn = function ($parentViewReference) use(&$transformViewReferenceFn, $keepChildren) {
                     $transformer = ViewReferenceXmlCacheRepository::findTransformerFromXmlElement($parentViewReference);
                     $reference = $transformer->transform($parentViewReference);
                     if ($keepChildren) {
                         foreach ($parentViewReference->children() as $child) {
                             $reference->addChild($transformViewReferenceFn($child));
                         }
                     }
                     return $reference;
                 };
                 $reference = $transformViewReferenceFn($reference);
             }
             $viewsReferences[] = $reference;
         }
     }
     return $viewsReferences;
 }