public int compare(DataInputView source1, DataInputView source2) throws IOException {
this.temp1.read(source1);
this.temp2.read(source2);
for (int i = 0; i < this.keyFields.length; i++) {
@SuppressWarnings("rawtypes")
final Key k1 = this.temp1.getField(this.keyFields[i], this.keyHolders[i]);
@SuppressWarnings("rawtypes")
final Key k2 = this.temp2.getField(this.keyFields[i], this.transientKeyHolders[i]);
if (k1 == null || k2 == null) {
throw new NullKeyFieldException(this.keyFields[i]);
}