try {
// 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