code: public static function descendantHas($topType, $goodTypes, $depth = 3)
      {
          $possibleTypes = [];
          foreach ($topType->collectorItem->children as $relationship) {
              $testType = $relationship->child;
              if (in_array($testType->systemId, $goodTypes)) {
                  return true;
              } elseif ($depth > 0 && self::descendantHas($testType, $goodTypes, $depth-1)) {
                  return true;
              }
          }
  
          return false;
      }
docs: [[@doctodo method_description:descendantHas]].
  
  @param [[@doctodo param_type:topType]]   $topType   [[@doctodo param_description:topType]]
  @param [[@doctodo param_type:goodTypes]] $goodTypes [[@doctodo param_description:goodTypes]]
  @param integer                           $depth     [[@doctodo param_description:depth]] [optional]
  
  @return [[@doctodo return_type:descendantHas]] [[@doctodo return_description:descendantHas]]