code: private void visit(XmlSchemaComplexType xsdComplexType,
              RootCompositeType compositeTypes, String complexTypeName) {
  
          Map < String, Object > fields = new LinkedHashMap < String, Object >();
          XmlSchemaParticle particle = xsdComplexType.getParticle();
          if (particle instanceof XmlSchemaSequence) {
              int fieldIndex = 0;
              XmlSchemaSequence sequence = (XmlSchemaSequence) particle;
              for (XmlSchemaSequenceMember member : sequence.getItems()) {
                  addField(fieldIndex, member, fields, compositeTypes);
                  fieldIndex++;
              }
  
          } else if (particle instanceof XmlSchemaAll) {
              int fieldIndex = 0;
              XmlSchemaAll all = (XmlSchemaAll) particle;
              for (XmlSchemaAllMember member : all.getItems()) {
                  addField(fieldIndex, member, fields, compositeTypes);
                  fieldIndex++;
              }
  
          } else {
              /* TODO process other particle types of interest */
              /* TODO find a way to handle xsd:attribute */
              log.warn("Schema object does not contain a sequence or all element at line "
                      + xsdComplexType.getLineNumber());
          }
          compositeTypes.complexTypes.put(complexTypeName, fields);
  
      }
docs: Visit each child of a complex type in turn.
  <p/>
  Contribute a complex type to a list of complex types.
  
  @param xsdComplexType the new complex type visited
  @param compositeTypes the lists of composite types being populated
  @param complexTypeName the name to use for this complex type