org_eclipse_lemminx_extensions_generators_xml2xsd_XML2XMLSchemaGeneratorTest_java
org.eclipse.lemminx.extensions.generators.AbstractXML2GrammarGenerator
private static void fillElements(Node node, Grammar grammar, ContainerDeclaration parent, boolean flat) {
        NodeList children = node.getChildNodes();
        if (parent instanceof ElementDeclaration) {
            ArrayList<String> tags = new ArrayList<String>();
            ElementDeclaration parentDecl = (ElementDeclaration)parent;
            for (int i = 0; i < children.getLength(); ++i) {
                Element element;
                String localName;
                Node child = children.item(i);
                if (child.getNodeType() != 1 || StringUtils.isEmpty(localName = (element = (Element)child).getLocalName())) continue;
                tags.add(localName);
            }
            parentDecl.addChildHierarchy(tags);
        }
        for (int i = 0; i < children.getLength(); ++i) {
            Element element;
            Node child = children.item(i);
            if (child.getNodeType() != 1 || (element = (Element)child).getLocalName() == null) continue;
            ElementDeclaration elementDecl = AbstractXML2GrammarGenerator.getElementDecl(grammar, parent, flat, element);
            if (!elementDecl.hasCharacterContent()) {
                elementDecl.setHasCharacterContent(AbstractXML2GrammarGenerator.hasCharacterContent(element));
            }
            elementDecl.incrementOccurrences();
            NamedNodeMap attributes = element.getAttributes();
            if (attributes != null) {
                for (int j = 0; j < attributes.getLength(); ++j) {
                    Attr attr = (Attr)attributes.item(j);
                    if (AbstractXML2GrammarGenerator.isIgnore(attr)) continue;
                    AttributeDeclaration attributeDecl = elementDecl.getAttribute(attr.getName());
                    attributeDecl.incrementOccurrences();
                    attributeDecl.addValue(attr.getValue());
                }
            }
            AbstractXML2GrammarGenerator.fillElements(element, grammar, elementDecl, flat);
        }
    }
 -> java.util.ArrayList.size(): int -> java.util.ArrayList.get(int): java.lang.Object -> java.util.ArrayList.size(): int -> java.util.ArrayList.get(int): java.lang.Object -> java.lang.String.indexOf(java.lang.String): int -> java.lang.String.isEmpty(): boolean -> java.util.List.add(java.lang.Object): boolean -> java.util.ArrayList.size(): int -> java.util.ArrayList.get(int): java.lang.Object -> java.util.ArrayList.size(): int -> java.util.List.stream(): java.util.stream.Stream -> java.util.function.Function.identity(): java.util.function.Function -> java.util.stream.Collectors.counting(): java.util.stream.Collector -> java.util.stream.Collectors.groupingBy(java.util.function.Function,java.util.function.Supplier,java.util.stream.Collector): java.util.stream.Collector -> java.util.stream.Stream.collect(java.util.stream.Collector): java.lang.Object -> java.util.Map.keySet(): java.util.Set -> java.util.Map.entrySet(): java.util.Set -> java.util.Set.iterator(): java.util.Iterator -> java.util.Iterator.hasNext(): boolean -> java.util.Map.entrySet(): 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$Entry.getKey(): java.lang.Object -> java.util.Map.get(java.lang.Object): java.lang.Object -> java.util.Map.put(java.lang.Object,java.lang.Object): java.lang.Object -> java.util.Map.get(java.lang.Object): java.lang.Object -> java.lang.Long.longValue(): long -> java.lang.Long.longValue(): long -> java.util.Iterator.hasNext(): boolean -> java.util.Map.entrySet(): 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$Entry.getKey(): java.lang.Object -> java.util.Map$Entry.getValue(): java.lang.Object -> java.util.Iterator.hasNext(): boolean -> java.util.ArrayList.size(): int -> java.util.ArrayList.get(int): java.lang.Object -> java.util.ArrayList.size(): int -> java.util.ArrayList.get(int): java.lang.Object -> java.lang.String.indexOf(java.lang.String): int -> java.lang.String.indexOf(java.lang.String): int -> java.util.Map.get(java.lang.Object): java.lang.Object -> java.util.Map.put(java.lang.Object,java.lang.Object): java.lang.Object -> java.util.List.stream(): java.util.stream.Stream -> java.util.function.Function.identity(): java.util.function.Function -> java.util.stream.Collectors.counting(): java.util.stream.Collector -> java.util.stream.Collectors.groupingBy(java.util.function.Function,java.util.function.Supplier,java.util.stream.Collector): java.util.stream.Collector -> java.util.stream.Stream.collect(java.util.stream.Collector): java.lang.Object -> java.util.Map.keySet(): java.util.Set -> java.util.Map.entrySet(): java.util.Set -> java.util.Set.iterator(): java.util.Iterator -> java.util.Iterator.hasNext(): boolean -> java.util.Map.entrySet(): java.util.Set -> java.util.Set.iterator(): java.util.Iterator -> java.util.Iterator.hasNext(): boolean -> java.util.Map.entrySet(): java.util.Set -> java.util.Set.iterator(): java.util.Iterator -> java.util.Iterator.hasNext(): boolean -> java.util.ArrayList.size(): int -> java.util.ArrayList.get(int): java.lang.Object -> java.util.ArrayList.size(): int
 [CALL] [CALL] [EXIT] [CALL] -> java.util.ArrayList.size(): int [EXIT] [CALL] [CALL] -> java.util.ArrayList.get(int): java.lang.Object [EXIT] [EXIT] [CALL] [EXIT] [CALL] -> java.util.ArrayList.size(): int [EXIT] [CALL] [CALL] -> java.util.ArrayList.get(int): java.lang.Object [EXIT] [EXIT] [CALL] [EXIT] [CALL] [CALL] [EXIT] -> java.lang.String.indexOf(java.lang.String): int [EXIT] [CALL] -> java.lang.String.isEmpty(): boolean [EXIT] -> java.util.List.add(java.lang.Object): boolean [CALL] -> java.util.ArrayList.size(): int [EXIT] [CALL] [CALL] -> java.util.ArrayList.get(int): java.lang.Object [EXIT] [EXIT] [CALL] [EXIT] [CALL] -> java.util.ArrayList.size(): int [EXIT] [CALL] [CALL] -> java.util.List.stream(): java.util.stream.Stream -> java.util.function.Function.identity(): java.util.function.Function -> java.util.stream.Collectors.counting(): java.util.stream.Collector -> java.util.stream.Collectors.groupingBy(java.util.function.Function,java.util.function.Supplier,java.util.stream.Collector): java.util.stream.Collector -> java.util.stream.Stream.collect(java.util.stream.Collector): java.lang.Object -> java.util.Map.keySet(): java.util.Set -> java.util.Map.entrySet(): java.util.Set -> java.util.Set.iterator(): java.util.Iterator -> java.util.Iterator.hasNext(): boolean -> java.util.Map.entrySet(): 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$Entry.getKey(): java.lang.Object -> java.util.Map.get(java.lang.Object): java.lang.Object [CALL] [CALL] [EXIT] [CALL] [EXIT] [EXIT] -> java.util.Map.put(java.lang.Object,java.lang.Object): java.lang.Object -> java.util.Map.get(java.lang.Object): java.lang.Object [CALL] -> java.lang.Long.longValue(): long [CALL] [EXIT] -> java.lang.Long.longValue(): long [CALL] [EXIT] [EXIT] -> java.util.Iterator.hasNext(): boolean -> java.util.Map.entrySet(): 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$Entry.getKey(): java.lang.Object -> java.util.Map$Entry.getValue(): java.lang.Object [CALL] [EXIT] -> java.util.Iterator.hasNext(): boolean [EXIT] [EXIT] [CALL] -> java.util.ArrayList.size(): int [EXIT] [CALL] [CALL] -> java.util.ArrayList.get(int): java.lang.Object [EXIT] [EXIT] [CALL] [EXIT] [CALL] -> java.util.ArrayList.size(): int [EXIT] [CALL] [CALL] -> java.util.ArrayList.get(int): java.lang.Object [EXIT] [EXIT] [CALL] [EXIT] [CALL] [CALL] [EXIT] -> java.lang.String.indexOf(java.lang.String): int [EXIT] [CALL] [CALL] [CALL] [EXIT] -> java.lang.String.indexOf(java.lang.String): int [EXIT] [CALL] -> java.util.Map.get(java.lang.Object): java.lang.Object [CALL] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [EXIT] [CALL] [CALL] [CALL] [EXIT] -> java.util.Map.put(java.lang.Object,java.lang.Object): java.lang.Object [EXIT] [CALL] [EXIT] [EXIT] [EXIT] [EXIT] [CALL] [EXIT] [CALL] [CALL] [EXIT] [CALL] [EXIT] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [CALL] [EXIT] [CALL] [EXIT] [CALL] [CALL] -> java.util.List.stream(): java.util.stream.Stream -> java.util.function.Function.identity(): java.util.function.Function -> java.util.stream.Collectors.counting(): java.util.stream.Collector -> java.util.stream.Collectors.groupingBy(java.util.function.Function,java.util.function.Supplier,java.util.stream.Collector): java.util.stream.Collector -> java.util.stream.Stream.collect(java.util.stream.Collector): java.lang.Object -> java.util.Map.keySet(): java.util.Set -> java.util.Map.entrySet(): java.util.Set -> java.util.Set.iterator(): java.util.Iterator -> java.util.Iterator.hasNext(): boolean -> java.util.Map.entrySet(): java.util.Set -> java.util.Set.iterator(): java.util.Iterator -> java.util.Iterator.hasNext(): boolean -> java.util.Map.entrySet(): java.util.Set -> java.util.Set.iterator(): java.util.Iterator -> java.util.Iterator.hasNext(): boolean [EXIT] [EXIT] [CALL] [EXIT] [EXIT] [CALL] -> java.util.ArrayList.size(): int [EXIT] [CALL] [CALL] -> java.util.ArrayList.get(int): java.lang.Object [EXIT] [EXIT] [CALL] [EXIT] [CALL] -> java.util.ArrayList.size(): int [EXIT] [EXIT]