Program: 109359
Project: 109359
Buggy source:
private static Multimap<Long,RecommendedItem> readDataFile(File dataDir,double evaluationPercentage,RescorerProvider provider) throws IOException {
  int perMillion=(int)(1000000 * FastMath.sqrt(evaluationPercentage));
  Multimap<Long,RecommendedItem> data=ArrayListMultimap.create();
  for (  File dataFile : dataDir.listFiles(new PatternFilenameFilter("String_Node_Str"))) {
    log.info("String_Node_Str",dataFile);
    int count=0;
    for (    CharSequence line : new FileLineIterable(dataFile)) {
      Iterator<String> parts=COMMA_TAB_SPLIT.split(line).iterator();
      String userIDString=parts.next();
      if (userIDString.hashCode() % 1000000 <= perMillion) {
        String itemIDString=parts.next();
        if (itemIDString.hashCode() % 1000000 <= perMillion) {
          long userID=Long.parseLong(userIDString);
          long itemID=Long.parseLong(itemIDString);
          if (parts.hasNext()) {
            String token=parts.next().trim();
            if (!token.isEmpty()) {
              float value=LangUtils.parseFloat(token);
              if (provider != null) {
                IDRescorer rescorer=provider.getRecommendRescorer(new long[]{userID},(MyrrixRecommender)null);
                if (rescorer != null) {
                  value=(float)rescorer.rescore(itemID,value);
                }
              }
              data.put(userID,new GenericRecommendedItem(itemID,value));
            }
          }
 else {
            float value=1.0f;
            if (provider != null) {
              IDRescorer rescorer=provider.getRecommendRescorer(new long[]{userID},(MyrrixRecommender)null);
              if (rescorer != null) {
                value=(float)rescorer.rescore(itemID,value);
              }
            }
            data.put(userID,new GenericRecommendedItem(itemID,value));
          }
        }
      }
      if (++count % 1000000 == 0) {
        log.info("String_Node_Str",count);
      }
    }
  }
  return data;
}

Fixed version (ground truth):
private static DataFileContents readDataFile(File dataDir,double evaluationPercentage,RescorerProvider provider) throws IOException {
  int perMillion=(int)(1000000 * FastMath.sqrt(evaluationPercentage));
  Multimap<Long,RecommendedItem> data=ArrayListMultimap.create();
  Multimap<String,RecommendedItem> itemTags=ArrayListMultimap.create();
  Multimap<String,RecommendedItem> userTags=ArrayListMultimap.create();
  for (  File dataFile : dataDir.listFiles(new PatternFilenameFilter("String_Node_Str"))) {
    log.info("String_Node_Str",dataFile);
    int count=0;
    for (    CharSequence line : new FileLineIterable(dataFile)) {
      Iterator<String> parts=COMMA_TAB_SPLIT.split(line).iterator();
      String userIDString=parts.next();
      if (userIDString.hashCode() % 1000000 <= perMillion) {
        String itemIDString=parts.next();
        if (itemIDString.hashCode() % 1000000 <= perMillion) {
          Long userID=null;
          boolean userIsTag=userIDString.startsWith("String_Node_Str");
          if (!userIsTag) {
            userID=Long.valueOf(userIDString);
          }
          boolean itemIsTag=itemIDString.startsWith("String_Node_Str");
          Long itemID=null;
          if (!itemIsTag) {
            itemID=Long.valueOf(itemIDString);
          }
          Preconditions.checkArgument(!(userIsTag && itemIsTag),"String_Node_Str");
          if (parts.hasNext()) {
            String token=parts.next().trim();
            if (!token.isEmpty()) {
              float value=LangUtils.parseFloat(token);
              if (userIsTag) {
                itemTags.put(userIDString,new GenericRecommendedItem(itemID,value));
              }
 else               if (itemIsTag) {
                userTags.put(itemIDString,new GenericRecommendedItem(userID,value));
              }
 else {
                if (provider != null) {
                  IDRescorer rescorer=provider.getRecommendRescorer(new long[]{userID},(MyrrixRecommender)null);
                  if (rescorer != null) {
                    value=(float)rescorer.rescore(itemID,value);
                  }
                }
                data.put(userID,new GenericRecommendedItem(itemID,value));
              }
            }
          }
 else {
            if (userIsTag) {
              itemTags.put(userIDString,new GenericRecommendedItem(itemID,1.0f));
            }
 else             if (itemIsTag) {
              userTags.put(itemIDString,new GenericRecommendedItem(userID,1.0f));
            }
 else {
              float value=1.0f;
              if (provider != null) {
                IDRescorer rescorer=provider.getRecommendRescorer(new long[]{userID},(MyrrixRecommender)null);
                if (rescorer != null) {
                  value=(float)rescorer.rescore(itemID,value);
                }
              }
              data.put(userID,new GenericRecommendedItem(itemID,value));
            }
          }
        }
      }
      if (++count % 1000000 == 0) {
        log.info("String_Node_Str",count);
      }
    }
  }
  return new DataFileContents(data,itemTags,userTags);
}