private void getTestIds(CriteriaType criteria, Collection<String> testIds) { if (criteria == null) { return; // Criteria have been filtered from the definition. } for (Object child : criteria.getCriteriaOrCriterionOrExtendDefinition()) { if (child instanceof CriteriaType) { getTestIds((CriteriaType) child, testIds); } else if (child instanceof CriterionType) { String testId = ((CriterionType) child).getTestRef(); if (!testIds.contains(testId)) { testIds.add(testId); } } else if (child instanceof ExtendDefinitionType) { String definitionId = ((ExtendDefinitionType) child).getDefinitionRef(); for (String testId : getTestIds(definitionTable.get(definitionId))) { if (!testIds.contains(testId)) { testIds.add(testId); } } } } }