Program: 64840
Project: 64840
Buggy source:
public Object valueFromRow(AbstractRecord row,JoinedAttributeManager joinManager,ObjectBuildingQuery query,CacheKey cacheKey,AbstractSession executionSession,boolean isTargetProtected,Boolean[] wasCacheUsed){
  Object value=row.get(this.field);
  if (value == null) {
    return value;
  }
  Object fieldValue=null;
  XMLUnmarshaller unmarshaller=((XMLRecord)row).getUnmarshaller();
  if (value instanceof String) {
    if (this.isSwaRef() && (unmarshaller.getAttachmentUnmarshaller() != null)) {
      if (getAttributeClassification() == XMLBinaryDataHelper.getXMLBinaryDataHelper().DATA_HANDLER) {
        fieldValue=unmarshaller.getAttachmentUnmarshaller().getAttachmentAsDataHandler((String)value);
      }
 else {
        fieldValue=unmarshaller.getAttachmentUnmarshaller().getAttachmentAsByteArray((String)value);
      }
    }
 else     if (!this.isSwaRef()) {
      byte[] bytes=((XMLConversionManager)executionSession.getDatasourcePlatform().getConversionManager()).convertSchemaBase64ToByteArray(value);
      fieldValue=bytes;
    }
  }
 else   if (value instanceof byte[] || value instanceof Byte[]) {
    fieldValue=value;
  }
 else {
    XMLRecord record=(XMLRecord)value;
    record.setSession(executionSession);
    if ((unmarshaller.getAttachmentUnmarshaller() != null) && unmarshaller.getAttachmentUnmarshaller().isXOPPackage() && !this.isSwaRef()&& !this.shouldInlineBinaryData()) {
      String xpath=XMLConstants.EMPTY_STRING;
      String prefix=null;
      NamespaceResolver descriptorResolver=((XMLDescriptor)getDescriptor()).getNamespaceResolver();
      if (descriptorResolver != null) {
        prefix=descriptorResolver.resolveNamespaceURI(XMLConstants.XOP_URL);
      }
      if (prefix == null) {
        prefix=XMLConstants.XOP_PREFIX;
      }
      NamespaceResolver tempResolver=new NamespaceResolver();
      tempResolver.put(prefix,XMLConstants.XOP_URL);
      xpath=prefix + include;
      XMLField field=new XMLField(xpath);
      field.setNamespaceResolver(tempResolver);
      String includeValue=(String)record.get(field);
      if (includeValue != null) {
        if ((getAttributeClassification() == ClassConstants.ABYTE) || (getAttributeClassification() == ClassConstants.APBYTE)) {
          fieldValue=unmarshaller.getAttachmentUnmarshaller().getAttachmentAsByteArray(includeValue);
        }
 else {
          fieldValue=unmarshaller.getAttachmentUnmarshaller().getAttachmentAsDataHandler(includeValue);
        }
      }
 else {
        fieldValue=record.get(XMLConstants.TEXT);
        fieldValue=((XMLConversionManager)executionSession.getDatasourcePlatform().getConversionManager()).convertSchemaBase64ToByteArray(fieldValue);
      }
    }
 else     if ((unmarshaller.getAttachmentUnmarshaller() != null) && isSwaRef()) {
      String refValue=(String)record.get(XMLConstants.TEXT);
      if (refValue != null) {
        fieldValue=unmarshaller.getAttachmentUnmarshaller().getAttachmentAsDataHandler(refValue);
      }
    }
 else {
      fieldValue=record.get(XMLConstants.TEXT);
      if (fieldValue != null) {
        fieldValue=((XMLConversionManager)executionSession.getDatasourcePlatform().getConversionManager()).convertSchemaBase64ToByteArray(fieldValue);
      }
 else {
        fieldValue=new byte[0];
      }
    }
  }
  Object attributeValue=fieldValue;
  if (getConverter() != null) {
    if (getConverter() instanceof XMLConverter) {
      attributeValue=((XMLConverter)getConverter()).convertDataValueToObjectValue(fieldValue,executionSession,unmarshaller);
    }
 else {
      attributeValue=getConverter().convertDataValueToObjectValue(fieldValue,executionSession);
    }
  }
  attributeValue=XMLBinaryDataHelper.getXMLBinaryDataHelper().convertObject(attributeValue,getAttributeClassification(),executionSession);
  return attributeValue;
}

Fixed version (ground truth):
public Object valueFromRow(AbstractRecord row,JoinedAttributeManager joinManager,ObjectBuildingQuery query,CacheKey cacheKey,AbstractSession executionSession,boolean isTargetProtected,Boolean[] wasCacheUsed){
  Object value=row.get(this.field);
  if (value == null) {
    return value;
  }
  Object fieldValue=null;
  XMLUnmarshaller unmarshaller=((XMLRecord)row).getUnmarshaller();
  if (value instanceof String) {
    if (this.isSwaRef() && (unmarshaller.getAttachmentUnmarshaller() != null)) {
      if (getAttributeClassification() == XMLBinaryDataHelper.getXMLBinaryDataHelper().DATA_HANDLER) {
        fieldValue=unmarshaller.getAttachmentUnmarshaller().getAttachmentAsDataHandler((String)value);
      }
 else {
        fieldValue=unmarshaller.getAttachmentUnmarshaller().getAttachmentAsByteArray((String)value);
      }
    }
 else     if (!this.isSwaRef()) {
      byte[] bytes=((XMLConversionManager)executionSession.getDatasourcePlatform().getConversionManager()).convertSchemaBase64ToByteArray(value);
      fieldValue=bytes;
    }
  }
 else   if (value instanceof byte[] || value instanceof Byte[]) {
    fieldValue=value;
  }
 else {
    XMLRecord record=(XMLRecord)value;
    if (getNullPolicy().valueIsNull((Element)record.getDOM())) {
      return null;
    }
    record.setSession(executionSession);
    if ((unmarshaller.getAttachmentUnmarshaller() != null) && unmarshaller.getAttachmentUnmarshaller().isXOPPackage() && !this.isSwaRef()&& !this.shouldInlineBinaryData()) {
      String xpath=XMLConstants.EMPTY_STRING;
      String prefix=null;
      NamespaceResolver descriptorResolver=((XMLDescriptor)getDescriptor()).getNamespaceResolver();
      if (descriptorResolver != null) {
        prefix=descriptorResolver.resolveNamespaceURI(XMLConstants.XOP_URL);
      }
      if (prefix == null) {
        prefix=XMLConstants.XOP_PREFIX;
      }
      NamespaceResolver tempResolver=new NamespaceResolver();
      tempResolver.put(prefix,XMLConstants.XOP_URL);
      xpath=prefix + include;
      XMLField field=new XMLField(xpath);
      field.setNamespaceResolver(tempResolver);
      String includeValue=(String)record.get(field);
      if (includeValue != null) {
        if ((getAttributeClassification() == ClassConstants.ABYTE) || (getAttributeClassification() == ClassConstants.APBYTE)) {
          fieldValue=unmarshaller.getAttachmentUnmarshaller().getAttachmentAsByteArray(includeValue);
        }
 else {
          fieldValue=unmarshaller.getAttachmentUnmarshaller().getAttachmentAsDataHandler(includeValue);
        }
      }
 else {
        fieldValue=record.get(XMLConstants.TEXT);
        fieldValue=((XMLConversionManager)executionSession.getDatasourcePlatform().getConversionManager()).convertSchemaBase64ToByteArray(fieldValue);
      }
    }
 else     if ((unmarshaller.getAttachmentUnmarshaller() != null) && isSwaRef()) {
      String refValue=(String)record.get(XMLConstants.TEXT);
      if (refValue != null) {
        fieldValue=unmarshaller.getAttachmentUnmarshaller().getAttachmentAsDataHandler(refValue);
      }
    }
 else {
      fieldValue=record.get(XMLConstants.TEXT);
      if (fieldValue != null) {
        fieldValue=((XMLConversionManager)executionSession.getDatasourcePlatform().getConversionManager()).convertSchemaBase64ToByteArray(fieldValue);
      }
 else {
        fieldValue=new byte[0];
      }
    }
  }
  Object attributeValue=fieldValue;
  if (getConverter() != null) {
    if (getConverter() instanceof XMLConverter) {
      attributeValue=((XMLConverter)getConverter()).convertDataValueToObjectValue(fieldValue,executionSession,unmarshaller);
    }
 else {
      attributeValue=getConverter().convertDataValueToObjectValue(fieldValue,executionSession);
    }
  }
  attributeValue=XMLBinaryDataHelper.getXMLBinaryDataHelper().convertObject(attributeValue,getAttributeClassification(),executionSession);
  return attributeValue;
}