/**
  * @param VulnerabilityHost $host
  * @return array
  */
 protected function calcComputedVulns(VulnerabilityHost $host)
 {
     $baseVulns = $this->calcVulnerableElementVulns($host->getVulnTree());
     if ($host instanceof Field && $host->getName() == 'userEmail') {
         //var_dump($baseVulns);exit;
     }
     $descriptor = null;
     if ($host instanceof Field) {
         $descriptor = $host->getDescriptor();
     }
     $chain = $host->getCheckChain();
     unset($chain[0]);
     if (!count($chain)) {
         return $baseVulns;
     }
     if (!$baseVulns['children']) {
         $baseVulns['children'] = [];
     }
     if ($descriptor) {
         foreach ($chain as $chainEl) {
             if ($chainEl === $host->getParent()) {
                 continue;
             }
             foreach ($chainEl->getFields() as $field) {
                 if ($field === $host) {
                     continue;
                 }
                 if ($field->matchesToDescriptor($descriptor)) {
                     $fieldVulns = $this->calcVulnerableElementVulns($field->getVulnTree(), null, true, true);
                     if (count($fieldVulns)) {
                         $baseVulns['children'][] = $fieldVulns;
                     }
                     break;
                 }
             }
         }
     }
     foreach ($chain as $chainEl) {
         $fieldVulns = $this->calcVulnerableElementVulns($chainEl->getVulnTree(), null, true, true);
         if (count($fieldVulns)) {
             $baseVulns['children'][] = $fieldVulns;
         }
     }
     if (!count($baseVulns['children'])) {
         unset($baseVulns['children']);
     }
     return $baseVulns;
 }