Program: 88411
Project: 88411
Buggy source:
/** 
 * {@inheritDoc}
 */
@Override public Plan getPlan(String... args){
  if (args.length != 5) {
    throw new IllegalArgumentException("String_Node_Str");
  }
  int noSubTasks=Integer.parseInt(args[0]);
  String docsInput=args[1];
  String ranksInput=args[2];
  String visitsInput=args[3];
  String output=args[4];
  DataSourceContract<PactString,Tuple> docs=new DataSourceContract<PactString,Tuple>(StringTupleDataInFormat.class,docsInput,"String_Node_Str");
  docs.setFormatParameter(TextInputFormat.FORMAT_PAIR_DELIMITER,"String_Node_Str");
  docs.setDegreeOfParallelism(noSubTasks);
  docs.setOutputContract(UniqueKey.class);
  DataSourceContract<PactString,Tuple> ranks=new DataSourceContract<PactString,Tuple>(StringTupleDataInFormat.class,ranksInput,"String_Node_Str");
  ranks.setFormatParameter(TextInputFormat.FORMAT_PAIR_DELIMITER,"String_Node_Str");
  ranks.setDegreeOfParallelism(noSubTasks);
  DataSourceContract<PactString,Tuple> visits=new DataSourceContract<PactString,Tuple>(StringTupleDataInFormat.class,visitsInput,"String_Node_Str");
  visits.setFormatParameter(TextInputFormat.FORMAT_PAIR_DELIMITER,"String_Node_Str");
  visits.setDegreeOfParallelism(noSubTasks);
  MapContract<PactString,Tuple,PactString,PactNull> filterDocs=new MapContract<PactString,Tuple,PactString,PactNull>(FilterDocs.class,"String_Node_Str");
  filterDocs.setDegreeOfParallelism(noSubTasks);
  filterDocs.getCompilerHints().setSelectivity(0.15f);
  filterDocs.getCompilerHints().setAvgBytesPerRecord(60);
  MapContract<PactString,Tuple,PactString,Tuple> filterRanks=new MapContract<PactString,Tuple,PactString,Tuple>(FilterRanks.class,"String_Node_Str");
  filterRanks.setDegreeOfParallelism(noSubTasks);
  filterRanks.getCompilerHints().setSelectivity(0.25f);
  MapContract<PactString,Tuple,PactString,PactNull> filterVisits=new MapContract<PactString,Tuple,PactString,PactNull>(FilterVisits.class,"String_Node_Str");
  filterVisits.setDegreeOfParallelism(noSubTasks);
  filterVisits.getCompilerHints().setAvgBytesPerRecord(60);
  filterVisits.getCompilerHints().setSelectivity(0.2f);
  MatchContract<PactString,Tuple,PactNull,PactString,Tuple> joinDocsRanks=new MatchContract<PactString,Tuple,PactNull,PactString,Tuple>(JoinDocRanks.class,"String_Node_Str");
  joinDocsRanks.setDegreeOfParallelism(noSubTasks);
  joinDocsRanks.getCompilerHints().setSelectivity(0.15f);
  CoGroupContract<PactString,PactNull,Tuple,PactString,Tuple> antiJoinVisits=new CoGroupContract<PactString,PactNull,Tuple,PactString,Tuple>(AntiJoinVisits.class,"String_Node_Str");
  antiJoinVisits.setDegreeOfParallelism(noSubTasks);
  DataSinkContract<PactString,Tuple> result=new DataSinkContract<PactString,Tuple>(StringTupleDataOutFormat.class,output,"String_Node_Str");
  result.setDegreeOfParallelism(noSubTasks);
  filterDocs.setInput(docs);
  filterRanks.setInput(ranks);
  filterVisits.setInput(visits);
  joinDocsRanks.setFirstInput(filterRanks);
  joinDocsRanks.setSecondInput(filterDocs);
  antiJoinVisits.setFirstInput(filterVisits);
  antiJoinVisits.setSecondInput(joinDocsRanks);
  result.setInput(antiJoinVisits);
  return new Plan(result,"String_Node_Str");
}

Fixed version (ground truth):
/** 
 * {@inheritDoc}
 */
@Override public Plan getPlan(String... args){
  int noSubTasks=(args.length > 0 ? Integer.parseInt(args[0]) : 1);
  String docsInput=(args.length > 1 ? args[1] : "String_Node_Str");
  String ranksInput=(args.length > 2 ? args[2] : "String_Node_Str");
  String visitsInput=(args.length > 3 ? args[3] : "String_Node_Str");
  String output=(args.length > 4 ? args[4] : "String_Node_Str");
  DataSourceContract<PactString,Tuple> docs=new DataSourceContract<PactString,Tuple>(StringTupleDataInFormat.class,docsInput,"String_Node_Str");
  docs.setFormatParameter(TextInputFormat.FORMAT_PAIR_DELIMITER,"String_Node_Str");
  docs.setDegreeOfParallelism(noSubTasks);
  docs.setOutputContract(UniqueKey.class);
  DataSourceContract<PactString,Tuple> ranks=new DataSourceContract<PactString,Tuple>(StringTupleDataInFormat.class,ranksInput,"String_Node_Str");
  ranks.setFormatParameter(TextInputFormat.FORMAT_PAIR_DELIMITER,"String_Node_Str");
  ranks.setDegreeOfParallelism(noSubTasks);
  DataSourceContract<PactString,Tuple> visits=new DataSourceContract<PactString,Tuple>(StringTupleDataInFormat.class,visitsInput,"String_Node_Str");
  visits.setFormatParameter(TextInputFormat.FORMAT_PAIR_DELIMITER,"String_Node_Str");
  visits.setDegreeOfParallelism(noSubTasks);
  MapContract<PactString,Tuple,PactString,PactNull> filterDocs=new MapContract<PactString,Tuple,PactString,PactNull>(FilterDocs.class,"String_Node_Str");
  filterDocs.setDegreeOfParallelism(noSubTasks);
  filterDocs.getCompilerHints().setSelectivity(0.15f);
  filterDocs.getCompilerHints().setAvgBytesPerRecord(60);
  MapContract<PactString,Tuple,PactString,Tuple> filterRanks=new MapContract<PactString,Tuple,PactString,Tuple>(FilterRanks.class,"String_Node_Str");
  filterRanks.setDegreeOfParallelism(noSubTasks);
  filterRanks.getCompilerHints().setSelectivity(0.25f);
  MapContract<PactString,Tuple,PactString,PactNull> filterVisits=new MapContract<PactString,Tuple,PactString,PactNull>(FilterVisits.class,"String_Node_Str");
  filterVisits.setDegreeOfParallelism(noSubTasks);
  filterVisits.getCompilerHints().setAvgBytesPerRecord(60);
  filterVisits.getCompilerHints().setSelectivity(0.2f);
  MatchContract<PactString,Tuple,PactNull,PactString,Tuple> joinDocsRanks=new MatchContract<PactString,Tuple,PactNull,PactString,Tuple>(JoinDocRanks.class,"String_Node_Str");
  joinDocsRanks.setDegreeOfParallelism(noSubTasks);
  joinDocsRanks.getCompilerHints().setSelectivity(0.15f);
  CoGroupContract<PactString,PactNull,Tuple,PactString,Tuple> antiJoinVisits=new CoGroupContract<PactString,PactNull,Tuple,PactString,Tuple>(AntiJoinVisits.class,"String_Node_Str");
  antiJoinVisits.setDegreeOfParallelism(noSubTasks);
  DataSinkContract<PactString,Tuple> result=new DataSinkContract<PactString,Tuple>(StringTupleDataOutFormat.class,output,"String_Node_Str");
  result.setDegreeOfParallelism(noSubTasks);
  filterDocs.setInput(docs);
  filterRanks.setInput(ranks);
  filterVisits.setInput(visits);
  joinDocsRanks.setFirstInput(filterRanks);
  joinDocsRanks.setSecondInput(filterDocs);
  antiJoinVisits.setFirstInput(filterVisits);
  antiJoinVisits.setSecondInput(joinDocsRanks);
  result.setInput(antiJoinVisits);
  return new Plan(result,"String_Node_Str");
}