Program: 31494
Project: 31494
Buggy source:
public AsOfPartitionedJoinRecordSource(RecordSource<? extends Record> master,int masterTimestampIndex,RecordSource<? extends Record> slave,int slaveTimestampIndex,CharSequenceHashSet masterKeyColumns,CharSequenceHashSet slaveKeyColumns,int pageSize){
  this.master=master;
  this.masterTimestampIndex=masterTimestampIndex;
  this.slave=slave;
  this.slaveTimestampIndex=slaveTimestampIndex;
  if (slave.supportsRowIdAccess()) {
    map=new LastRowIdRecordMap(master.getMetadata(),slave.getMetadata(),masterKeyColumns,slaveKeyColumns);
    holder=new RowidRecordHolder();
  }
 else {
    boolean var=false;
    OUT:     for (int i=0, n=slave.getMetadata().getColumnCount(); i < n; i++) {
switch (slave.getMetadata().getColumnQuick(i).getType()) {
case BINARY:
        throw new JournalRuntimeException("String_Node_Str");
case STRING:
      if (!masterKeyColumns.contains(slave.getMetadata().getColumnQuick(i).getName())) {
        var=true;
      }
    break OUT;
}
}
if (var) {
this.map=new LastVarRecordMap(master.getMetadata(),slave.getMetadata(),masterKeyColumns,slaveKeyColumns,pageSize);
this.holder=new VarRecordHolder(slave.getMetadata());
}
 else {
this.map=new LastFixRecordMap(master.getMetadata(),slave.getMetadata(),masterKeyColumns,slaveKeyColumns,pageSize);
this.holder=new FixRecordHolder(slave.getMetadata());
}
}
this.metadata=new SplitRecordMetadata(master.getMetadata(),map.getMetadata());
this.record=new SplitRecord(this.metadata,master.getMetadata().getColumnCount());
this.storageFacade=new SplitRecordStorageFacade(this.metadata,master.getMetadata().getColumnCount());
}

Fixed version (ground truth):
public AsOfPartitionedJoinRecordSource(RecordSource<? extends Record> master,int masterTimestampIndex,RecordSource<? extends Record> slave,int slaveTimestampIndex,CharSequenceHashSet masterKeyColumns,CharSequenceHashSet slaveKeyColumns,int pageSize){
  this.master=master;
  this.masterTimestampIndex=masterTimestampIndex;
  this.slave=slave;
  this.slaveTimestampIndex=slaveTimestampIndex;
  if (slave.supportsRowIdAccess()) {
    map=new LastRowIdRecordMap(master.getMetadata(),slave.getMetadata(),masterKeyColumns,slaveKeyColumns);
    holder=new RowidRecordHolder();
  }
 else {
    boolean var=false;
    OUT:     for (int i=0, n=slave.getMetadata().getColumnCount(); i < n; i++) {
switch (slave.getMetadata().getColumnQuick(i).getType()) {
case BINARY:
        throw new JournalRuntimeException("String_Node_Str");
case STRING:
      if (!masterKeyColumns.contains(slave.getMetadata().getColumnQuick(i).getName())) {
        var=true;
      }
    break OUT;
}
}
if (var) {
this.map=new LastVarRecordMap(master.getMetadata(),slave.getMetadata(),masterKeyColumns,slaveKeyColumns,pageSize);
this.holder=new VarRecordHolder(slave.getMetadata());
}
 else {
this.map=new LastFixRecordMap(master.getMetadata(),slave.getMetadata(),masterKeyColumns,slaveKeyColumns,pageSize);
this.holder=new FixRecordHolder(slave.getMetadata());
}
}
map.getMetadata().setAlias(slave.getMetadata().getAlias());
this.metadata=new SplitRecordMetadata(master.getMetadata(),map.getMetadata());
this.record=new SplitRecord(this.metadata,master.getMetadata().getColumnCount());
this.storageFacade=new SplitRecordStorageFacade(this.metadata,master.getMetadata().getColumnCount());
}