final Object candidateFieldValue = candidateData.get(field);
if (candidateFieldValue instanceof ListOfRootOid) {
final ListOfRootOid patternElements = (ListOfRootOid) patternFieldValue;
for (int i = 0; i < patternElements.size(); i++) {
final RootOid requiredElement = patternElements.elementAt(i); // must have this element
boolean requiredFound = false;
final ListOfRootOid testElements = ((ListOfRootOid) candidateFieldValue);
for (int j = 0; j < testElements.size(); j++) {
if (requiredElement.equals(testElements.elementAt(j))) {
requiredFound = true;