Program: 131847
Project: 131847
Buggy source:
protected void processDefuzzify(String block,Engine engine) throws Exception {
  BufferedReader reader=new BufferedReader(new StringReader(block));
  String line=reader.readLine();
  String name;
  int index=line.indexOf(' ');
  if (index >= 0) {
    name=Op.makeValidId(line.substring(index + 1));
  }
 else {
    throw new RuntimeException("String_Node_Str" + line);
  }
  if (!engine.hasOutputVariable(name)) {
    throw new RuntimeException(String.format("String_Node_Str",name,line));
  }
  OutputVariable outputVariable=engine.getOutputVariable(name);
  while ((line=reader.readLine()) != null) {
    StringTokenizer tokenizer=new StringTokenizer(line);
    String firstToken=tokenizer.nextToken();
    if ("String_Node_Str".equals(firstToken)) {
      outputVariable.addTerm(prepareTerm(extractTerm(line),engine));
    }
 else     if ("String_Node_Str".equals(firstToken)) {
      outputVariable.setDefuzzifier(extractDefuzzifier(line));
    }
 else     if ("String_Node_Str".equals(firstToken)) {
      outputVariable.output().setAccumulation(extractSNorm(line));
    }
 else     if ("String_Node_Str".equals(firstToken)) {
      Op.Pair<Double,Boolean> defaultAndLock=extractDefaultValue(line);
      outputVariable.setDefaultValue(defaultAndLock.first);
      outputVariable.setLockValidOutput(defaultAndLock.second);
    }
 else     if ("String_Node_Str".equals(firstToken)) {
      Op.Pair<Double,Double> range=extractRange(line);
      outputVariable.setRange(range.first,range.second);
    }
 else     if ("String_Node_Str".equals(firstToken)) {
      Op.Pair<Boolean,Boolean> output_range=extractLocksOutputAndRange(line);
      outputVariable.setLockValidOutput(output_range.first);
      outputVariable.setLockOutputRange(output_range.second);
    }
 else {
      throw new RuntimeException(String.format("String_Node_Str",firstToken));
    }
  }
}

Fixed version (ground truth):
protected void processDefuzzify(String block,Engine engine) throws Exception {
  BufferedReader reader=new BufferedReader(new StringReader(block));
  String line=reader.readLine();
  String name;
  int index=line.indexOf(' ');
  if (index >= 0) {
    name=Op.makeValidId(line.substring(index + 1));
  }
 else {
    throw new RuntimeException("String_Node_Str" + line);
  }
  if (!engine.hasOutputVariable(name)) {
    throw new RuntimeException(String.format("String_Node_Str",name,line));
  }
  OutputVariable outputVariable=engine.getOutputVariable(name);
  while ((line=reader.readLine()) != null) {
    StringTokenizer tokenizer=new StringTokenizer(line);
    String firstToken=tokenizer.nextToken();
    if ("String_Node_Str".equals(firstToken)) {
      outputVariable.addTerm(prepareTerm(extractTerm(line),engine));
    }
 else     if ("String_Node_Str".equals(firstToken)) {
      outputVariable.setDefuzzifier(extractDefuzzifier(line));
    }
 else     if ("String_Node_Str".equals(firstToken)) {
      outputVariable.output().setAccumulation(extractSNorm(line));
    }
 else     if ("String_Node_Str".equals(firstToken)) {
      Op.Pair<Double,Boolean> defaultAndLock=extractDefaultValue(line);
      outputVariable.setDefaultValue(defaultAndLock.first);
      outputVariable.setLockValidOutput(defaultAndLock.second || outputVariable.isLockValidOutput());
    }
 else     if ("String_Node_Str".equals(firstToken)) {
      Op.Pair<Double,Double> range=extractRange(line);
      outputVariable.setRange(range.first,range.second);
    }
 else     if ("String_Node_Str".equals(firstToken)) {
      Op.Pair<Boolean,Boolean> output_range=extractLocksOutputAndRange(line);
      outputVariable.setLockValidOutput(output_range.first);
      outputVariable.setLockOutputRange(output_range.second);
    }
 else {
      throw new RuntimeException(String.format("String_Node_Str",firstToken));
    }
  }
}