@Override void compare(YElement expected, YElement actual, EvalResult result) { List<YDate> expDates = expected.getDates(); Map<String, YDate> actDatesMap = new HashMap<String, YDate>(); for (YDate date : actual.getDates()) { String type = date.getType(); actDatesMap.put(type, date); } for (YDate date : expDates) { String type = date.getType(); if (actDatesMap.containsKey(type)) { if (date.equals(actDatesMap.get(type))) { result.append("Date - " + type, ResultStatus.RECOGNIZED, 1); } else { result.append("Date - " + type, ResultStatus.FAILED, 1); } actDatesMap.remove(type); } else { result.append("Date - " + type, ResultStatus.FAILED, 1); } } for (String type : actDatesMap.keySet()) { result.append("Date - " + type, ResultStatus.REDUNDANT, 1); } } },