Program: 118215
Project: 118215
Buggy source:
private void buildParameterFromCollection(XmlSchemaObjectCollection xmlSchemaObjectCollection,ParameterInfo parameter,int ioOrRecursion){
  int count=xmlSchemaObjectCollection.getCount();
  for (int j=0; j < count; j++) {
    XmlSchemaObject xmlSchemaObject=xmlSchemaObjectCollection.getItem(j);
    if (xmlSchemaObject instanceof XmlSchemaGroupBase) {
      XmlSchemaGroupBase xmlSchemaGroupBase=(XmlSchemaGroupBase)xmlSchemaObject;
      XmlSchemaObjectCollection items=xmlSchemaGroupBase.getItems();
      if (items != null) {
        buildParameterFromCollection(items,parameter,ioOrRecursion);
      }
    }
 else     if (xmlSchemaObject instanceof XmlSchemaAny) {
      ParameterInfo parameterSon=new ParameterInfo();
      parameterSon.setName("String_Node_Str");
      parameterSon.setParent(parameter);
      parameter.getParameterInfos().add(parameterSon);
    }
 else     if (xmlSchemaObject instanceof XmlSchemaElement) {
      XmlSchemaElement xmlSchemaElement=(XmlSchemaElement)xmlSchemaObject;
      String elementName=xmlSchemaElement.getName();
      ParameterInfo parameterSon=new ParameterInfo();
      parameterSon.setName(elementName);
      parameterSon.setParent(parameter);
      parameterSon.setNameSpace(((XmlSchemaElement)xmlSchemaObject).getQName().getNamespaceURI());
      Long min=xmlSchemaElement.getMinOccurs();
      Long max=xmlSchemaElement.getMaxOccurs();
      if (max - min > 1) {
        parameterSon.setArraySize(-1);
        parameterSon.setIndex("String_Node_Str");
      }
      parameter.getParameterInfos().add(parameterSon);
      Boolean isHave=false;
      if (!parametersName.isEmpty() && parameterSon.getName() != null) {
        for (int p=0; p < parametersName.size(); p++) {
          if (parameterSon.getName().equals(parametersName.get(p))) {
            isHave=true;
          }
        }
      }
      if (xmlSchemaElement.getSchemaTypeName() != null) {
        String elementTypeName=xmlSchemaElement.getSchemaTypeName().getLocalPart();
        if (elementTypeName != null && elementTypeName.equals("String_Node_Str")) {
          parameterSon.setName(xmlSchemaElement.getName() + "String_Node_Str");
        }
        parameterSon.setType(elementTypeName);
        parameterSon.setNameSpace(xmlSchemaElement.getQName().getNamespaceURI());
        if (!isHave && !WsdlTypeUtil.isJavaBasicType(elementTypeName)) {
          buileParameterFromTypes(xmlSchemaElement.getQName().getNamespaceURI(),elementTypeName,parameterSon,ioOrRecursion);
        }
      }
 else       if (xmlSchemaElement.getSchemaType() != null) {
        if (xmlSchemaElement.getSchemaType() instanceof XmlSchemaComplexType) {
          XmlSchemaComplexType xmlElementComplexType=(XmlSchemaComplexType)xmlSchemaElement.getSchemaType();
          XmlSchemaParticle xmlSchemaParticle=xmlElementComplexType.getParticle();
          if (xmlSchemaParticle instanceof XmlSchemaGroupBase) {
            XmlSchemaGroupBase xmlSchemaGroupBase=(XmlSchemaGroupBase)xmlSchemaParticle;
            XmlSchemaObjectCollection childCollection=xmlSchemaGroupBase.getItems();
            if (childCollection != null && !isHave) {
              buildParameterFromCollection(childCollection,parameterSon,ioOrRecursion);
            }
          }
 else           if (xmlSchemaElement.getSchemaTypeName() != null) {
            String paraTypeName=xmlSchemaElement.getSchemaTypeName().getLocalPart();
            String paraTypeNamespace=xmlSchemaElement.getSchemaTypeName().getNamespaceURI();
            if (paraTypeName != null && !isHave) {
              parameter.setType(paraTypeName);
              buileParameterFromTypes(paraTypeNamespace,paraTypeName,parameterSon,ioOrRecursion);
            }
          }
        }
 else         if (xmlSchemaElement.getSchemaType() instanceof XmlSchemaSimpleType) {
          XmlSchemaSimpleType xmlSchemaSimpleType=(XmlSchemaSimpleType)xmlSchemaElement.getSchemaType();
          String typeName=xmlSchemaSimpleType.getName();
          if (typeName != null && typeName.equals("String_Node_Str")) {
            ParameterInfo pSon=new ParameterInfo();
            pSon.setName("String_Node_Str");
            pSon.setParent(parameter);
            parameter.getParameterInfos().add(pSon);
          }
          parameter.setType(typeName);
        }
      }
 else       if (xmlSchemaElement.getRefName() != null) {
        String elementTypeName=xmlSchemaElement.getRefName().getLocalPart();
        if (!isHave && !WsdlTypeUtil.isJavaBasicType(elementTypeName)) {
          buildParameterFromElements(elementTypeName,parameterSon,ioOrRecursion);
        }
      }
    }
 else     if (xmlSchemaObject instanceof XmlSchemaAttribute) {
      XmlSchemaAttribute xmlSchemaAttribute=(XmlSchemaAttribute)xmlSchemaObject;
      String elementName=xmlSchemaAttribute.getName();
      ParameterInfo parameterSon=new ParameterInfo();
      parameterSon.setName(elementName);
      parameterSon.setParent(parameter);
      parameter.getParameterInfos().add(parameterSon);
      Boolean isHave=false;
      if (!parametersName.isEmpty() && parameterSon.getName() != null) {
        for (int p=0; p < parametersName.size(); p++) {
          if (parameterSon.getName().equals(parametersName.get(p))) {
            isHave=true;
          }
        }
      }
      if (xmlSchemaAttribute.getSchemaTypeName() != null) {
        String elementTypeName=xmlSchemaAttribute.getSchemaTypeName().getLocalPart();
        String elementTypeNamespace=xmlSchemaAttribute.getSchemaTypeName().getNamespaceURI();
        parameterSon.setType(elementTypeName);
        if (!isHave && !WsdlTypeUtil.isJavaBasicType(elementTypeName)) {
          buileParameterFromTypes(elementTypeNamespace,elementTypeName,parameterSon,ioOrRecursion);
        }
      }
 else       if (xmlSchemaAttribute.getRefName() != null) {
        String refName=xmlSchemaAttribute.getRefName().getLocalPart();
        parameterSon.setType(refName);
        if (!isHave) {
          buildParameterFromElements(refName,parameterSon,ioOrRecursion);
        }
      }
    }
  }
}

Fixed version (ground truth):
private void buildParameterFromCollection(XmlSchemaObjectCollection xmlSchemaObjectCollection,ParameterInfo parameter,int ioOrRecursion){
  int count=xmlSchemaObjectCollection.getCount();
  for (int j=0; j < count; j++) {
    XmlSchemaObject xmlSchemaObject=xmlSchemaObjectCollection.getItem(j);
    if (xmlSchemaObject instanceof XmlSchemaGroupBase) {
      XmlSchemaGroupBase xmlSchemaGroupBase=(XmlSchemaGroupBase)xmlSchemaObject;
      XmlSchemaObjectCollection items=xmlSchemaGroupBase.getItems();
      if (items != null) {
        buildParameterFromCollection(items,parameter,ioOrRecursion);
      }
    }
 else     if (xmlSchemaObject instanceof XmlSchemaAny) {
      ParameterInfo parameterSon=new ParameterInfo();
      parameterSon.setName("String_Node_Str");
      parameterSon.setParent(parameter);
      parameter.getParameterInfos().add(parameterSon);
    }
 else     if (xmlSchemaObject instanceof XmlSchemaElement) {
      XmlSchemaElement xmlSchemaElement=(XmlSchemaElement)xmlSchemaObject;
      String elementName=xmlSchemaElement.getName();
      ParameterInfo parameterSon=new ParameterInfo();
      parameterSon.setName(elementName);
      parameterSon.setParent(parameter);
      if (((XmlSchemaElement)xmlSchemaObject).getQName() != null) {
        parameterSon.setNameSpace(((XmlSchemaElement)xmlSchemaObject).getQName().getNamespaceURI());
      }
      Long min=xmlSchemaElement.getMinOccurs();
      Long max=xmlSchemaElement.getMaxOccurs();
      if (max - min > 1) {
        parameterSon.setArraySize(-1);
        parameterSon.setIndex("String_Node_Str");
      }
      parameter.getParameterInfos().add(parameterSon);
      Boolean isHave=false;
      if (!parametersName.isEmpty() && parameterSon.getName() != null) {
        for (int p=0; p < parametersName.size(); p++) {
          if (parameterSon.getName().equals(parametersName.get(p))) {
            isHave=true;
          }
        }
      }
      if (xmlSchemaElement.getSchemaTypeName() != null) {
        String elementTypeName=xmlSchemaElement.getSchemaTypeName().getLocalPart();
        if (elementTypeName != null && elementTypeName.equals("String_Node_Str")) {
          parameterSon.setName(xmlSchemaElement.getName() + "String_Node_Str");
        }
        parameterSon.setType(elementTypeName);
        parameterSon.setNameSpace(xmlSchemaElement.getQName().getNamespaceURI());
        if (!isHave && !WsdlTypeUtil.isJavaBasicType(elementTypeName)) {
          buileParameterFromTypes(xmlSchemaElement.getQName().getNamespaceURI(),elementTypeName,parameterSon,ioOrRecursion);
        }
      }
 else       if (xmlSchemaElement.getSchemaType() != null) {
        if (xmlSchemaElement.getSchemaType() instanceof XmlSchemaComplexType) {
          XmlSchemaComplexType xmlElementComplexType=(XmlSchemaComplexType)xmlSchemaElement.getSchemaType();
          XmlSchemaParticle xmlSchemaParticle=xmlElementComplexType.getParticle();
          if (xmlSchemaParticle instanceof XmlSchemaGroupBase) {
            XmlSchemaGroupBase xmlSchemaGroupBase=(XmlSchemaGroupBase)xmlSchemaParticle;
            XmlSchemaObjectCollection childCollection=xmlSchemaGroupBase.getItems();
            if (childCollection != null && !isHave) {
              buildParameterFromCollection(childCollection,parameterSon,ioOrRecursion);
            }
          }
 else           if (xmlSchemaElement.getSchemaTypeName() != null) {
            String paraTypeName=xmlSchemaElement.getSchemaTypeName().getLocalPart();
            String paraTypeNamespace=xmlSchemaElement.getSchemaTypeName().getNamespaceURI();
            if (paraTypeName != null && !isHave) {
              parameter.setType(paraTypeName);
              buileParameterFromTypes(paraTypeNamespace,paraTypeName,parameterSon,ioOrRecursion);
            }
          }
        }
 else         if (xmlSchemaElement.getSchemaType() instanceof XmlSchemaSimpleType) {
          XmlSchemaSimpleType xmlSchemaSimpleType=(XmlSchemaSimpleType)xmlSchemaElement.getSchemaType();
          String typeName=xmlSchemaSimpleType.getName();
          if (typeName != null && typeName.equals("String_Node_Str")) {
            ParameterInfo pSon=new ParameterInfo();
            pSon.setName("String_Node_Str");
            pSon.setParent(parameter);
            parameter.getParameterInfos().add(pSon);
          }
          parameter.setType(typeName);
        }
      }
 else       if (xmlSchemaElement.getRefName() != null) {
        String elementTypeName=xmlSchemaElement.getRefName().getLocalPart();
        if (!isHave && !WsdlTypeUtil.isJavaBasicType(elementTypeName)) {
          buildParameterFromElements(elementTypeName,parameterSon,ioOrRecursion);
        }
      }
    }
 else     if (xmlSchemaObject instanceof XmlSchemaAttribute) {
      XmlSchemaAttribute xmlSchemaAttribute=(XmlSchemaAttribute)xmlSchemaObject;
      String elementName=xmlSchemaAttribute.getName();
      ParameterInfo parameterSon=new ParameterInfo();
      parameterSon.setName(elementName);
      parameterSon.setParent(parameter);
      parameter.getParameterInfos().add(parameterSon);
      Boolean isHave=false;
      if (!parametersName.isEmpty() && parameterSon.getName() != null) {
        for (int p=0; p < parametersName.size(); p++) {
          if (parameterSon.getName().equals(parametersName.get(p))) {
            isHave=true;
          }
        }
      }
      if (xmlSchemaAttribute.getSchemaTypeName() != null) {
        String elementTypeName=xmlSchemaAttribute.getSchemaTypeName().getLocalPart();
        String elementTypeNamespace=xmlSchemaAttribute.getSchemaTypeName().getNamespaceURI();
        parameterSon.setType(elementTypeName);
        if (!isHave && !WsdlTypeUtil.isJavaBasicType(elementTypeName)) {
          buileParameterFromTypes(elementTypeNamespace,elementTypeName,parameterSon,ioOrRecursion);
        }
      }
 else       if (xmlSchemaAttribute.getRefName() != null) {
        String refName=xmlSchemaAttribute.getRefName().getLocalPart();
        parameterSon.setType(refName);
        if (!isHave) {
          buildParameterFromElements(refName,parameterSon,ioOrRecursion);
        }
      }
    }
  }
}