Program: 109393
Project: 109393
Buggy source:
@Override public Object exec(@SuppressWarnings("String_Node_Str") List arguments) throws TemplateModelException {
  ExecutionStatistics.get().begin(NAME);
  if (arguments.size() < 2) {
    throw new TemplateModelException("String_Node_Str" + "String_Node_Str");
  }
  StringModel projectModelTraversalArg=(StringModel)arguments.get(0);
  ProjectModelTraversal projectModelTraversal=(ProjectModelTraversal)projectModelTraversalArg.getWrappedObject();
  TemplateBooleanModel recursiveBooleanModel=(TemplateBooleanModel)arguments.get(1);
  boolean recursive=recursiveBooleanModel.getAsBoolean();
  Set<String> includeTags=Collections.emptySet();
  if (arguments.size() >= 3) {
    includeTags=FreeMarkerUtil.simpleSequenceToSet((SimpleSequence)arguments.get(2));
  }
  Set<String> excludeTags=Collections.emptySet();
  if (arguments.size() >= 4) {
    excludeTags=FreeMarkerUtil.simpleSequenceToSet((SimpleSequence)arguments.get(3));
  }
  projectModelTraversal.reset();
  Map<Integer,Integer> classificationEffortDetails=classificationService.getMigrationEffortByPoints(projectModelTraversal,includeTags,excludeTags,recursive,false);
  projectModelTraversal.reset();
  Map<Integer,Integer> hintEffortDetails=inlineHintService.getMigrationEffortByPoints(projectModelTraversal,includeTags,excludeTags,recursive,false);
  Map<Integer,Integer> results=sumMaps(classificationEffortDetails,hintEffortDetails);
  ExecutionStatistics.get().end(NAME);
  int points=sumPoints(results);
  LOG.info(String.format("String_Node_Str",NAME,points,results,classificationEffortDetails,hintEffortDetails,projectModelTraversal,recursive ? "String_Node_Str" : "String_Node_Str",includeTags,excludeTags));
  return results;
}

Fixed version (ground truth):
@Override public Object exec(@SuppressWarnings("String_Node_Str") List arguments) throws TemplateModelException {
  ExecutionStatistics.get().begin(NAME);
  if (arguments.size() < 2) {
    throw new TemplateModelException("String_Node_Str" + "String_Node_Str");
  }
  StringModel projectModelTraversalArg=(StringModel)arguments.get(0);
  ProjectModelTraversal projectModelTraversal=(ProjectModelTraversal)projectModelTraversalArg.getWrappedObject();
  TemplateBooleanModel recursiveBooleanModel=(TemplateBooleanModel)arguments.get(1);
  boolean recursive=recursiveBooleanModel.getAsBoolean();
  Set<String> includeTags=Collections.emptySet();
  if (arguments.size() >= 3) {
    includeTags=FreeMarkerUtil.simpleSequenceToSet((SimpleSequence)arguments.get(2));
  }
  Set<String> excludeTags=Collections.emptySet();
  if (arguments.size() >= 4) {
    excludeTags=FreeMarkerUtil.simpleSequenceToSet((SimpleSequence)arguments.get(3));
  }
  Map<Integer,Integer> classificationEffortDetails=classificationService.getMigrationEffortByPoints(projectModelTraversal,includeTags,excludeTags,recursive,false);
  Map<Integer,Integer> hintEffortDetails=inlineHintService.getMigrationEffortByPoints(projectModelTraversal,includeTags,excludeTags,recursive,false);
  Map<Integer,Integer> results=sumMaps(classificationEffortDetails,hintEffortDetails);
  ExecutionStatistics.get().end(NAME);
  int points=sumPoints(results);
  LOG.info(String.format("String_Node_Str",NAME,points,results,classificationEffortDetails,hintEffortDetails,projectModelTraversal,recursive ? "String_Node_Str" : "String_Node_Str",includeTags,excludeTags));
  return results;
}