org_apache_struts2_oval_interceptor_OValValidationInterceptorTest_java
com.opensymphony.xwork2.config.providers.XmlConfigurationProvider
private void verifyPackageStructure() {
        DirectedGraph<String> graph = new DirectedGraph<String>();
        for (Document doc : this.documents) {
            Element rootElement = doc.getDocumentElement();
            NodeList children = rootElement.getChildNodes();
            int childSize = children.getLength();
            for (int i = 0; i < childSize; ++i) {
                Element child;
                String nodeName;
                Node childNode = children.item(i);
                if (!(childNode instanceof Element) || !"package".equals(nodeName = (child = (Element)childNode).getNodeName())) continue;
                String packageName = child.getAttribute("name");
                this.declaredPackages.put(packageName, child);
                graph.addNode(packageName);
                String extendsAttribute = child.getAttribute("extends");
                List<String> parents = ConfigurationUtil.buildParentListFromString(extendsAttribute);
                for (String parent : parents) {
                    graph.addNode(parent);
                    graph.addEdge(packageName, parent);
                }
            }
        }
        CycleDetector detector = new CycleDetector(graph);
        if (detector.containsCycle()) {
            StringBuilder builder = new StringBuilder("The following packages participate in cycles:");
            for (String packageName : detector.getVerticesInCycles()) {
                builder.append(" ");
                builder.append(packageName);
            }
            throw new ConfigurationException(builder.toString());
        }
    }
 -> java.util.List.iterator(): java.util.Iterator -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.String.equals(java.lang.Object): boolean -> java.util.Map.put(java.lang.Object,java.lang.Object): java.lang.Object -> java.util.Map.containsKey(java.lang.Object): boolean -> java.util.Map.put(java.lang.Object,java.lang.Object): java.lang.Object -> java.lang.CharSequence.length(): int -> java.util.Collections.emptyList(): java.util.List -> java.util.List.iterator(): java.util.Iterator -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.hasNext(): boolean -> java.util.Map.keySet(): java.util.Set -> java.util.Set.iterator(): java.util.Iterator -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.util.Map.containsKey(java.lang.Object): boolean -> java.util.Map.put(java.lang.Object,java.lang.Object): java.lang.Object -> java.util.Map.get(java.lang.Object): java.lang.Object -> java.util.Collections.unmodifiableSet(java.util.Set): java.util.Set -> java.util.Set.iterator(): java.util.Iterator -> java.util.Iterator.hasNext(): boolean -> java.util.Map.put(java.lang.Object,java.lang.Object): java.lang.Object -> java.util.List.addAll(java.util.Collection): boolean -> java.util.List.isEmpty(): boolean -> java.util.Iterator.hasNext(): boolean -> java.util.List.isEmpty(): boolean
 [CALL] [CALL] [EXIT] -> java.util.List.iterator(): java.util.Iterator -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.String.equals(java.lang.Object): boolean -> java.util.Map.put(java.lang.Object,java.lang.Object): java.lang.Object [CALL] -> java.util.Map.containsKey(java.lang.Object): boolean -> java.util.Map.put(java.lang.Object,java.lang.Object): java.lang.Object [EXIT] [CALL] [CALL] -> java.lang.CharSequence.length(): int [EXIT] -> java.util.Collections.emptyList(): java.util.List [EXIT] -> java.util.List.iterator(): java.util.Iterator -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.hasNext(): boolean [CALL] [EXIT] [CALL] [CALL] -> java.util.Map.keySet(): java.util.Set -> java.util.Set.iterator(): java.util.Iterator [EXIT] -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.util.Map.containsKey(java.lang.Object): boolean [CALL] -> java.util.Map.put(java.lang.Object,java.lang.Object): java.lang.Object [CALL] -> java.util.Map.get(java.lang.Object): java.lang.Object -> java.util.Collections.unmodifiableSet(java.util.Set): java.util.Set [EXIT] -> java.util.Set.iterator(): java.util.Iterator -> java.util.Iterator.hasNext(): boolean -> java.util.Map.put(java.lang.Object,java.lang.Object): java.lang.Object -> java.util.List.addAll(java.util.Collection): boolean -> java.util.List.isEmpty(): boolean [EXIT] -> java.util.Iterator.hasNext(): boolean -> java.util.List.isEmpty(): boolean [EXIT] [EXIT]