Program: 65971
Project: 65971
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();
  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;
}

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) {
    QName schemaType=getSchemaType(xmlField,value,session);
    boolean isElementOpen=false;
    if (XMLConstants.QNAME_QNAME.equals(schemaType)) {
      QName fieldValue=(QName)value;
      if (fieldValue.getNamespaceURI() == null || fieldValue.getNamespaceURI().equals("String_Node_Str") && marshalRecord.getNamespaceResolver().getDefaultNamespaceURI() != null) {
        if (namespaceResolver.getDefaultNamespaceURI().equals(xPathFragment.getNamespaceURI()) && xPathFragment.getPrefix() == null) {
          String prefix=namespaceResolver.generatePrefix();
          String xPath=prefix + "String_Node_Str" + xPathFragment.getShortName();
          XPathFragment newFragment=new XPathFragment(xPath);
          newFragment.setNamespaceURI(namespaceResolver.getDefaultNamespaceURI());
          newFragment.setNextFragment(xPathFragment.getNextFragment());
          marshalRecord.openStartElement(newFragment,namespaceResolver);
          isElementOpen=true;
          marshalRecord.attribute(XMLConstants.XMLNS_URL,prefix,XMLConstants.XMLNS + "String_Node_Str" + prefix,namespaceResolver.getDefaultNamespaceURI());
          xPathFragment=newFragment;
        }
      }
    }
    if (!isElementOpen) {
      marshalRecord.openStartElement(xPathFragment,namespaceResolver);
    }
    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;
}