sbool matchRecordWithTypes(IFieldsToList record, Class... types) { O[] l = record._fieldsToList(); int n = l(l); if (n != l(types)) fail("Wrong number of arguments for " + className(record) + " " + asList(types)); for i to n: if (!isInstanceX(types[i], l[i])) false; true; }