Program: 29541
Project: 29541
Buggy source:
private void checkCallParamTypes(CallNode call,TemplateNode callee){
  TemplateParamTypes calleeParamTypes=getTemplateParamTypes(callee);
  Set<String> explicitParams=Sets.newHashSet();
  for (  CallParamNode callerParam : call.getChildren()) {
    SoyType argType=null;
    if (callerParam.getKind() == SoyNode.Kind.CALL_PARAM_VALUE_NODE) {
      ExprNode expr=((CallParamValueNode)callerParam).getValueExprUnion().getExpr();
      if (expr != null) {
        argType=expr.getType();
      }
    }
 else     if (callerParam.getKind() == SoyNode.Kind.CALL_PARAM_CONTENT_NODE) {
      argType=SanitizedType.getTypeForContentKind(((CallParamContentNode)callerParam).getContentKind());
    }
    if (argType == null) {
      continue;
    }
    Collection<SoyType> declaredParamTypes=calleeParamTypes.params.get(callerParam.getKey());
    for (    SoyType formalType : declaredParamTypes) {
      checkArgumentAgainstParamType(call,callerParam.getKey(),argType,formalType,calleeParamTypes.isIndirect(callerParam.getKey()));
    }
    explicitParams.add(callerParam.getKey());
  }
  if (call.isPassingData()) {
    if (call.isPassingAllData() && template.getParams() != null) {
      for (      TemplateParam callerParam : template.getParams()) {
        if (!(callerParam instanceof HeaderParam)) {
          continue;
        }
        String paramName=callerParam.name();
        if (explicitParams.contains(paramName)) {
          continue;
        }
        Collection<SoyType> declaredParamTypes=calleeParamTypes.params.get(paramName);
        for (        SoyType formalType : declaredParamTypes) {
          checkArgumentAgainstParamType(call,paramName,callerParam.type(),formalType,calleeParamTypes.isIndirect(paramName));
        }
      }
    }
 else {
    }
  }
}

Fixed version (ground truth):
private void checkCallParamTypes(CallNode call,TemplateNode callee){
  TemplateParamTypes calleeParamTypes=getTemplateParamTypes(callee);
  Set<String> explicitParams=Sets.newHashSet();
  for (  CallParamNode callerParam : call.getChildren()) {
    SoyType argType=null;
    if (callerParam.getKind() == SoyNode.Kind.CALL_PARAM_VALUE_NODE) {
      ExprNode expr=((CallParamValueNode)callerParam).getValueExprUnion().getExpr();
      if (expr != null) {
        argType=expr.getType();
      }
    }
 else     if (callerParam.getKind() == SoyNode.Kind.CALL_PARAM_CONTENT_NODE) {
      argType=SanitizedType.getTypeForContentKind(((CallParamContentNode)callerParam).getContentKind());
    }
    if (argType != null) {
      Collection<SoyType> declaredParamTypes=calleeParamTypes.params.get(callerParam.getKey());
      for (      SoyType formalType : declaredParamTypes) {
        checkArgumentAgainstParamType(call,callerParam.getKey(),argType,formalType,calleeParamTypes.isIndirect(callerParam.getKey()));
      }
    }
    explicitParams.add(callerParam.getKey());
  }
  if (call.isPassingData()) {
    if (call.isPassingAllData() && template.getParams() != null) {
      for (      TemplateParam callerParam : template.getParams()) {
        if (!(callerParam instanceof HeaderParam)) {
          continue;
        }
        String paramName=callerParam.name();
        if (explicitParams.contains(paramName)) {
          continue;
        }
        Collection<SoyType> declaredParamTypes=calleeParamTypes.params.get(paramName);
        for (        SoyType formalType : declaredParamTypes) {
          checkArgumentAgainstParamType(call,paramName,callerParam.type(),formalType,calleeParamTypes.isIndirect(paramName));
        }
      }
    }
 else {
    }
  }
}