/**
  * Helper method. Retrieves all elements from fieldset the $element belongs to.
  *
  * @param ElementInterface $element
  * @param FieldsetInterface $fieldset
  * @return array|\Traversable
  */
 protected function getFieldsetElements(ElementInterface $element, FieldsetInterface $fieldset)
 {
     $elementName = $this->normalizeElementName($element->getName());
     if ($fieldset->has($elementName) && $fieldset->get($elementName) === $element) {
         return array_merge($fieldset->getElements(), $fieldset->getFieldsets());
     }
     if ($fieldset instanceof Element\Collection && (($elements = $this->getFieldsetElements($element, $fieldset->getTargetElement())) || ($template = $fieldset->getTemplateElement()) && ($elements = $this->getFieldsetElements($element, $template)))) {
         return $elements;
     }
     foreach ($fieldset->getFieldsets() as $fieldsetElement) {
         if ($elements = $this->getFieldsetElements($element, $fieldsetElement)) {
             return $elements;
         }
     }
     return [];
 }