Program: 66117
Project: 66117
Buggy source:
public boolean marshalSingleValue(XPathFragment xPathFragment,MarshalRecord marshalRecord,Object object,Object value,AbstractSession session,NamespaceResolver namespaceResolver,MarshalContext marshalContext){
  if (xmlCompositeDirectCollectionMapping.hasValueConverter()) {
    if (xmlCompositeDirectCollectionMapping.getValueConverter() instanceof XMLConverter) {
      value=((XMLConverter)xmlCompositeDirectCollectionMapping.getValueConverter()).convertObjectValueToDataValue(value,session,marshalRecord.getMarshaller());
    }
 else {
      value=xmlCompositeDirectCollectionMapping.getValueConverter().convertObjectValueToDataValue(value,session);
    }
  }
  XMLField xmlField=(XMLField)xmlCompositeDirectCollectionMapping.getField();
  QName schemaType=getSchemaType(xmlField,value,session);
  String stringValue=getValueToWrite(schemaType,value,(XMLConversionManager)session.getDatasourcePlatform().getConversionManager(),namespaceResolver);
  if (null != stringValue) {
    marshalRecord.openStartElement(xPathFragment,namespaceResolver);
    XPathFragment nextFragment=xPathFragment.getNextFragment();
    if (nextFragment.isAttribute()) {
      marshalRecord.attribute(nextFragment,namespaceResolver,stringValue);
      marshalRecord.closeStartElement();
    }
 else {
      if (xmlField.isTypedTextField()) {
        updateNamespaces(schemaType,marshalRecord,xmlField);
      }
      marshalRecord.closeStartElement();
      if (xmlCompositeDirectCollectionMapping.isCDATA()) {
        marshalRecord.cdata(stringValue);
      }
 else {
        marshalRecord.characters(stringValue);
      }
    }
    marshalRecord.endElement(xPathFragment,namespaceResolver);
  }
 else {
    if (xmlCompositeDirectCollectionMapping.getNullPolicy().getMarshalNullRepresentation() != XMLNullRepresentationType.ABSENT_NODE) {
      marshalRecord.openStartElement(xPathFragment,namespaceResolver);
      XPathFragment nextFragment=xPathFragment.getNextFragment();
      xmlCompositeDirectCollectionMapping.getNullPolicy().directMarshal(nextFragment,marshalRecord,object,session,namespaceResolver);
      marshalRecord.endElement(xPathFragment,namespaceResolver);
    }
  }
  return true;
}

Fixed version (ground truth):
public boolean marshalSingleValue(XPathFragment xPathFragment,MarshalRecord marshalRecord,Object object,Object value,AbstractSession session,NamespaceResolver namespaceResolver,MarshalContext marshalContext){
  if (xmlCompositeDirectCollectionMapping.hasValueConverter()) {
    if (xmlCompositeDirectCollectionMapping.getValueConverter() instanceof XMLConverter) {
      value=((XMLConverter)xmlCompositeDirectCollectionMapping.getValueConverter()).convertObjectValueToDataValue(value,session,marshalRecord.getMarshaller());
    }
 else {
      value=xmlCompositeDirectCollectionMapping.getValueConverter().convertObjectValueToDataValue(value,session);
    }
  }
  XMLField xmlField=(XMLField)xmlCompositeDirectCollectionMapping.getField();
  if (null != value) {
    marshalRecord.openStartElement(xPathFragment,namespaceResolver);
    QName schemaType=getSchemaType(xmlField,value,session);
    String stringValue=getValueToWrite(schemaType,value,(XMLConversionManager)session.getDatasourcePlatform().getConversionManager(),marshalRecord);
    XPathFragment nextFragment=xPathFragment.getNextFragment();
    if (nextFragment.isAttribute()) {
      marshalRecord.attribute(nextFragment,namespaceResolver,stringValue);
      marshalRecord.closeStartElement();
    }
 else {
      if (xmlField.isTypedTextField()) {
        updateNamespaces(schemaType,marshalRecord,xmlField);
      }
      marshalRecord.closeStartElement();
      if (xmlCompositeDirectCollectionMapping.isCDATA()) {
        marshalRecord.cdata(stringValue);
      }
 else {
        marshalRecord.characters(stringValue);
      }
    }
    marshalRecord.endElement(xPathFragment,namespaceResolver);
  }
 else {
    if (xmlCompositeDirectCollectionMapping.getNullPolicy().getMarshalNullRepresentation() != XMLNullRepresentationType.ABSENT_NODE) {
      marshalRecord.openStartElement(xPathFragment,namespaceResolver);
      XPathFragment nextFragment=xPathFragment.getNextFragment();
      xmlCompositeDirectCollectionMapping.getNullPolicy().directMarshal(nextFragment,marshalRecord,object,session,namespaceResolver);
      marshalRecord.endElement(xPathFragment,namespaceResolver);
    }
  }
  return true;
}