void (TestIdentifier root, HashSet<TestIdentifier> visited) { String idAndName = idAndName(root); if (root.isContainer()) { boolean skipContainer = shouldSkipContainer(root); if (!skipContainer) myPrintStream.println("##teamcity[suiteTreeStarted" + idAndName + " " + getLocationHint(root) + "]"); for (TestIdentifier childIdentifier : myTestPlan.getChildren(root)) { if (visited.add(childIdentifier)) { sendTreeUnderRoot(childIdentifier, visited); } else { System.err.println("Identifier '" + getId(childIdentifier) + "' is reused"); } } if (!skipContainer) myPrintStream.println("##teamcity[suiteTreeEnded" + idAndName + "]"); } else if (root.isTest()) { myPrintStream.println("##teamcity[suiteTreeNode " + idAndName + " " + getLocationHint(root) + "]"); } }