Program: 65610
Project: 65610
Buggy source:
/** 
 * Build descriptor and mappings for an Object type argument.  The newly created descriptor will be added to the given OX project.
 */
protected void addToOXProjectForObjectTypeArg(DatabaseType dbType,Project oxProject,String objectName,String objectAlias){
  XMLDescriptor xdesc=(XMLDescriptor)oxProject.getDescriptorForAlias(objectAlias);
  if (xdesc == null) {
    xdesc=buildAndAddNewXMLDescriptor(oxProject,objectAlias,nct.generateSchemaAlias(objectAlias),buildCustomQName(objectName,dbwsBuilder).getNamespaceURI());
  }
  ObjectType oType=(ObjectType)dbType;
  for (  FieldType field : oType.getFields()) {
    String lFieldName=field.getFieldName().toLowerCase();
    if (xdesc.getMappingForAttributeName(lFieldName) == null) {
      if (field.isComposite()) {
        if (field.getDataType() instanceof ObjectType) {
          String alias=field.getDataType().getTypeName().toLowerCase();
          XMLDescriptor xdesc2=(XMLDescriptor)oxProject.getDescriptorForAlias(alias);
          if (xdesc2 == null) {
            String targetTypeName2=field.getDataType().getTypeName();
            xdesc2=buildAndAddNewXMLDescriptor(oxProject,alias,nct.generateSchemaAlias(alias),buildCustomQName(targetTypeName2,dbwsBuilder).getNamespaceURI());
            addToOXProjectForObjectTypeArg(field.getDataType(),oxProject,targetTypeName2,alias);
          }
          buildAndAddXMLCompositeObjectMapping(xdesc,lFieldName,xdesc2.getJavaClassName());
        }
      }
 else {
        addDirectMappingForFieldType(xdesc,lFieldName,field);
      }
    }
  }
}

Fixed version (ground truth):
/** 
 * Build descriptor and mappings for an Object type argument.  The newly created descriptor will be added to the given OX project.
 */
protected void addToOXProjectForObjectTypeArg(DatabaseType dbType,Project oxProject,String objectName,String objectAlias){
  XMLDescriptor xdesc=(XMLDescriptor)oxProject.getDescriptorForAlias(objectAlias);
  if (xdesc == null) {
    xdesc=buildAndAddNewXMLDescriptor(oxProject,objectAlias,nct.generateSchemaAlias(objectAlias),buildCustomQName(objectName,dbwsBuilder).getNamespaceURI());
  }
  ObjectType oType=(ObjectType)dbType;
  for (  FieldType field : oType.getFields()) {
    String lFieldName=field.getFieldName().toLowerCase();
    if (xdesc.getMappingForAttributeName(lFieldName) == null) {
      if (field.isComposite()) {
        String targetTypeName2=field.getDataType().getTypeName();
        String alias=targetTypeName2.toLowerCase();
        XMLDescriptor xdesc2=(XMLDescriptor)oxProject.getDescriptorForAlias(alias);
        boolean buildDescriptor=xdesc2 == null;
        if (buildDescriptor) {
          xdesc2=buildAndAddNewXMLDescriptor(oxProject,alias,nct.generateSchemaAlias(alias),buildCustomQName(targetTypeName2,dbwsBuilder).getNamespaceURI());
        }
        if (field.getDataType() instanceof ObjectType) {
          if (buildDescriptor) {
            addToOXProjectForObjectTypeArg(field.getDataType(),oxProject,targetTypeName2,alias);
          }
          buildAndAddXMLCompositeObjectMapping(xdesc,lFieldName,xdesc2.getJavaClassName());
        }
 else         if (field.getDataType() instanceof VArrayType) {
          if (buildDescriptor) {
            addToOXProjectForVArrayArg(field.getDataType(),oxProject,targetTypeName2,alias);
          }
          buildAndAddXMLCompositeDirectCollectionMapping(xdesc,lFieldName,lFieldName + "String_Node_Str",getAttributeClassForDatabaseType(field.getDataType()));
        }
      }
 else {
        addDirectMappingForFieldType(xdesc,lFieldName,field);
      }
    }
  }
}