// unmarshal to a QualityAssessmentList, and subsequently call the QualityAssessmentAdapter manually
// manually calling the adapter is required because XmlJavaTypeAdapter can't be used on XmlRootElement
// see: https://java.net/jira/browse/JAXB-117
Object temp = unmarshaller.unmarshal(xmlSnippet);
QualityAssessmentList qaList = (QualityAssessmentList) JAXBIntrospector.getValue(temp);
QualityAssessmentAdapter adapter = new QualityAssessmentAdapter();
QualityAssessment result = adapter.unmarshal(qaList);
// resolve references to Cv's (unmarshal them if required)
// use a cache of unmarshalled Cv's because we might encounter the same Cv multiple times
HashMap<String, Cv> cvCache = new HashMap<>();
adapter.resolveReferences(result, cvCache, index, unmarshaller);
// set the isSet flag based on the element name
if(unmarshaller.getIntrospector().getElementName(temp).getLocalPart().equals("setQuality"))
result.setSet(true);
else