protected function buildVulnerabilityElementFromArray($data, $conditional = false)
 {
     $vulnerabilities = $this->buildVulnerabilitySetFromArray($data['vuln_list']);
     if ($conditional) {
         $vulnElement = new ConditionalVulnerableElement($vulnerabilities);
         if (is_array($data['conditions'])) {
             $factory = ConditionFactory::instance();
             $conditionSet = new ConditionSet();
             foreach ($data['conditions'] as $name => $conditionData) {
                 $condition = $factory->create($name);
                 $condition->fillFromArray($conditionData);
                 $conditionSet->addCondition($condition);
             }
             $vulnElement->setConditions($conditionSet);
         }
     } else {
         $vulnElement = new VulnerableElement($vulnerabilities);
     }
     if ($data['name']) {
         $vulnElement->setName($data['name']);
     }
     if (is_array($data['children'])) {
         foreach ($data['children'] as $childData) {
             $child = $this->buildVulnerabilityElementFromArray($childData, true);
             $vulnElement->addChild($child);
         }
     }
     return $vulnElement;
 }