Program: 68706
Project: 68706
Buggy source:
private void setElementPropertyValue(){
  Property currentProperty=(Property)currentProperties.pop();
  boolean simple=true;
  if (lastEvent == END_ELEMENT) {
    simple=false;
  }
 else {
    if (depth > currentDataObjects.size()) {
      simple=true;
    }
 else {
      DataObject nextDO=(DataObject)currentDataObjects.peek();
      if (nextDO.getInstanceProperties().size() > 0) {
        simple=false;
      }
 else {
        currentDataObjects.pop();
      }
    }
    depth--;
  }
  lastEvent=END_ELEMENT;
  if (simple && (!isInCharacterBlock || (currentBuffer.length() == 0))) {
    return;
  }
  DataObject currentDataObject=(DataObject)currentDataObjects.peek();
  if (currentProperty != null) {
    Object value=null;
    if (simple) {
      value=currentBuffer.toString();
      ((SDOProperty)currentProperty).setType(SDOConstants.SDO_STRING);
      ((SDOProperty)currentProperty).setContainment(false);
    }
 else {
      value=currentDataObject;
      currentDataObjects.pop();
      depth--;
      if (currentDataObjects.isEmpty()) {
        currentDataObject=null;
      }
 else {
        currentDataObject=(DataObject)currentDataObjects.peek();
      }
    }
    HelperContext aHelperContext=((SDODataObject)currentDataObject)._getHelperContext();
    if (currentSchemaType != null) {
      Type sdoType=((SDOTypeHelper)aHelperContext.getTypeHelper()).getSDOTypeFromXSDType(currentSchemaType);
      if (sdoType != null) {
        ((SDOProperty)currentProperty).setType(sdoType);
      }
      if ((currentProperty.getType() != null) && simple) {
        value=((SDODataHelper)aHelperContext.getDataHelper()).convertFromStringValue((String)value,currentProperty.getType(),currentSchemaType);
      }
      currentSchemaType=null;
    }
 else     if ((currentProperty.getType() != null) && currentProperty.getType().isDataType()) {
      value=((SDODataHelper)aHelperContext.getDataHelper()).convertFromStringValue((String)value,currentProperty.getType());
    }
    if (currentDataObject != null) {
      if (!simple) {
        parentRecord.getUnmarshaller().getUnmarshalListener().afterUnmarshal(value,currentDataObject);
      }
      if (currentProperty.isMany()) {
        currentDataObject.getList(currentProperty).add(value);
      }
 else {
        currentDataObject.set(currentProperty,value);
      }
    }
    currentBuffer.reset();
  }
}

Fixed version (ground truth):
private void setElementPropertyValue(){
  Property currentProperty=(Property)currentProperties.pop();
  boolean simple=true;
  if (lastEvent == END_ELEMENT) {
    simple=false;
  }
 else {
    if (depth > currentDataObjects.size()) {
      simple=true;
    }
 else {
      DataObject nextDO=(DataObject)currentDataObjects.peek();
      if (nextDO.getInstanceProperties().size() > 0) {
        simple=false;
      }
 else {
        currentDataObjects.pop();
      }
    }
    depth--;
  }
  lastEvent=END_ELEMENT;
  if (simple && (!isInCharacterBlock || (currentBuffer.length() == 0))) {
    return;
  }
  DataObject currentDataObject=(DataObject)currentDataObjects.peek();
  if (currentProperty != null) {
    Object value=null;
    if (simple) {
      value=currentBuffer.toString();
      ((SDOProperty)currentProperty).setType(SDOConstants.SDO_STRING);
      ((SDOProperty)currentProperty).setContainment(false);
    }
 else {
      value=currentDataObject;
      currentDataObjects.pop();
      depth--;
      if (currentDataObjects.isEmpty()) {
        currentDataObject=null;
      }
 else {
        currentDataObject=(DataObject)currentDataObjects.peek();
      }
    }
    HelperContext aHelperContext=((SDOType)currentDataObject.getType()).getHelperContext();
    if (currentSchemaType != null) {
      Type sdoType=((SDOTypeHelper)aHelperContext.getTypeHelper()).getSDOTypeFromXSDType(currentSchemaType);
      if (sdoType != null) {
        ((SDOProperty)currentProperty).setType(sdoType);
      }
      if ((currentProperty.getType() != null) && simple) {
        value=((SDODataHelper)aHelperContext.getDataHelper()).convertFromStringValue((String)value,currentProperty.getType(),currentSchemaType);
      }
      currentSchemaType=null;
    }
 else     if ((currentProperty.getType() != null) && currentProperty.getType().isDataType()) {
      value=((SDODataHelper)aHelperContext.getDataHelper()).convertFromStringValue((String)value,currentProperty.getType());
    }
    if (currentDataObject != null) {
      if (!simple) {
        parentRecord.getUnmarshaller().getUnmarshalListener().afterUnmarshal(value,currentDataObject);
      }
      if (currentProperty.isMany()) {
        currentDataObject.getList(currentProperty).add(value);
      }
 else {
        currentDataObject.set(currentProperty,value);
      }
    }
    currentBuffer.reset();
  }
}