code: public Map < String, RootCompositeType > build(XmlSchema xmlSchema)
              throws Xsd2ConverterException {
  
          log.debug("visit XML Schema started");
          Map < String, RootCompositeType > rootComplexTypes = new LinkedHashMap < String, RootCompositeType >();
  
          for (Entry < QName, XmlSchemaElement > entry : xmlSchema.getElements()
                  .entrySet()) {
              if (entry.getValue().getSchemaType() instanceof XmlSchemaComplexType) {
                  CobolAnnotations cobolAnnotations = new CobolAnnotations(
                          entry.getValue());
                  XmlSchemaComplexType xsdComplexType = (XmlSchemaComplexType) entry
                          .getValue().getSchemaType();
                  RootCompositeType compositeTypes = new RootCompositeType(
                          cobolAnnotations.getCobolName());
                  String complexTypeName = getComplexTypeName(xsdComplexType);
                  rootComplexTypes.put(complexTypeName, compositeTypes);
                  visit(xsdComplexType, compositeTypes, complexTypeName);
              }
          }
  
          log.debug("visit XML Schema ended");
          return rootComplexTypes;
      }
docs: Process each element in the input Schema.
  <p/>
  
  @param xmlSchema the XML schema with COBOL annotations
  @return a map of root elements in the XML schema, each one mapped to its
  composite types constituents
  @throws Xsd2ConverterException if parsing the XML schema fails