case RECORD:
GenericRecord r1 = (GenericRecord)o1;
GenericRecord r2 = (GenericRecord)o2;
for (Map.Entry<String, Field> e : s.getFields().entrySet()) {
Field f = e.getValue();
if (f.order() == Field.Order.IGNORE)
continue; // ignore this field
String name = e.getKey();
int compare = compare(r1.get(name), r2.get(name), f.schema());
if (compare != 0) // not equal
return f.order() == Field.Order.DESCENDING ? -compare : compare;