/**
  * @param VulnerableElement $element
  * @return string
  */
 public function vulnerabilityTreeAsArray(VulnerableElement $element)
 {
     $result = [];
     $vulnerabilities = [];
     $children = [];
     $conditions = [];
     if ($element->hasChildren()) {
         $childrenArr = [];
         foreach ($element->getChildrenArray() as $child) {
             $childrenArr[] = $this->vulnerabilityTreeAsArray($child);
         }
         $children = $childrenArr;
     }
     if ($element instanceof ConditionalVulnerableElement) {
         /** @var ICondition $condition */
         foreach ($element->getConditions()->getConditions() as $condition) {
             $conditions[$condition->getName()] = $condition->toArray();
         }
     }
     /** @var Vulnerability $vuln */
     foreach ($element->getVulnerabilitySet()->getVulnerabilities() as $vuln) {
         $vulnerabilities[$vuln->getName()] = $vuln->asArray();
         unset($vulnerabilities[$vuln->getName()]['name']);
     }
     ksort($vulnerabilities);
     if ($element->getName()) {
         $result['name'] = $element->getName();
     }
     if (count($conditions)) {
         $result['conditions'] = $conditions;
     }
     if (count($vulnerabilities)) {
         $result['vuln_list'] = $vulnerabilities;
     }
     if (count($children)) {
         $result['children'] = $children;
     }
     return $result;
 }