Program: 109365
Project: 109365
Buggy source:
static void readInputFiles(FastByIDMap<FastIDSet> knownItemIDs,FastByIDMap<FastByIDFloatMap> rbyRow,FastByIDMap<FastByIDFloatMap> rbyColumn,File inputDir) throws IOException {
  FilenameFilter csvFilter=new PatternFilenameFilter("String_Node_Str");
  File[] otherFiles=inputDir.listFiles(new InvertedFilenameFilter(csvFilter));
  if (otherFiles != null) {
    for (    File otherFile : otherFiles) {
      log.info("String_Node_Str",otherFile.getName());
    }
  }
  File[] inputFiles=inputDir.listFiles(csvFilter);
  if (inputFiles == null) {
    log.info("String_Node_Str",inputDir);
    return;
  }
  Arrays.sort(inputFiles,ByLastModifiedComparator.INSTANCE);
  int lines=0;
  int badLines=0;
  for (  File inputFile : inputFiles) {
    log.info("String_Node_Str",inputFile);
    for (    CharSequence line : new FileLineIterable(inputFile)) {
      Iterator<String> it=COMMA.split(line).iterator();
      long userID;
      long itemID;
      float value;
      try {
        userID=Long.parseLong(it.next());
        itemID=Long.parseLong(it.next());
        if (it.hasNext()) {
          String valueToken=it.next().trim();
          value=valueToken.isEmpty() ? Float.NaN : LangUtils.parseFloat(valueToken);
        }
 else {
          value=1.0f;
        }
      }
 catch (      NoSuchElementException nsee) {
        log.warn("String_Node_Str",line);
        if (++badLines > 100) {
          throw new IOException("String_Node_Str");
        }
        continue;
      }
catch (      IllegalArgumentException iae) {
        if (lines == 0) {
          log.info("String_Node_Str");
        }
 else {
          log.warn("String_Node_Str",line);
          if (++badLines > 100) {
            throw new IOException("String_Node_Str");
          }
        }
        continue;
      }
      if (Float.isNaN(value)) {
        MatrixUtils.remove(userID,itemID,rbyRow,rbyColumn);
      }
 else {
        MatrixUtils.addTo(userID,itemID,value,rbyRow,rbyColumn);
      }
      if (knownItemIDs != null) {
        FastIDSet itemIDs=knownItemIDs.get(userID);
        if (Float.isNaN(value)) {
          if (itemIDs != null) {
            itemIDs.remove(itemID);
            if (itemIDs.isEmpty()) {
              knownItemIDs.remove(userID);
            }
          }
        }
 else {
          if (itemIDs == null) {
            itemIDs=new FastIDSet();
            knownItemIDs.put(userID,itemIDs);
          }
          itemIDs.add(itemID);
        }
      }
      if (++lines % 1000000 == 0) {
        log.info("String_Node_Str",lines);
      }
    }
  }
  removeSmall(rbyRow);
  removeSmall(rbyColumn);
}

Fixed version (ground truth):
static void readInputFiles(FastByIDMap<FastIDSet> knownItemIDs,FastByIDMap<FastByIDFloatMap> rbyRow,FastByIDMap<FastByIDFloatMap> rbyColumn,File inputDir) throws IOException {
  FilenameFilter csvFilter=new PatternFilenameFilter("String_Node_Str");
  File[] otherFiles=inputDir.listFiles(new InvertedFilenameFilter(csvFilter));
  if (otherFiles != null) {
    for (    File otherFile : otherFiles) {
      log.info("String_Node_Str",otherFile.getName());
    }
  }
  File[] inputFiles=inputDir.listFiles(csvFilter);
  if (inputFiles == null) {
    log.info("String_Node_Str",inputDir);
    return;
  }
  Arrays.sort(inputFiles,ByLastModifiedComparator.INSTANCE);
  int lines=0;
  int badLines=0;
  for (  File inputFile : inputFiles) {
    log.info("String_Node_Str",inputFile);
    for (    CharSequence line : new FileLineIterable(inputFile)) {
      lines++;
      Iterator<String> it=COMMA.split(line).iterator();
      long userID;
      long itemID;
      float value;
      try {
        userID=Long.parseLong(it.next());
        itemID=Long.parseLong(it.next());
        if (it.hasNext()) {
          String valueToken=it.next().trim();
          value=valueToken.isEmpty() ? Float.NaN : LangUtils.parseFloat(valueToken);
        }
 else {
          value=1.0f;
        }
      }
 catch (      NoSuchElementException nsee) {
        log.warn("String_Node_Str",line);
        if (++badLines > 100) {
          throw new IOException("String_Node_Str");
        }
        continue;
      }
catch (      IllegalArgumentException iae) {
        if (lines == 1) {
          log.info("String_Node_Str");
        }
 else {
          log.warn("String_Node_Str",line);
          if (++badLines > 100) {
            throw new IOException("String_Node_Str");
          }
        }
        continue;
      }
      if (Float.isNaN(value)) {
        MatrixUtils.remove(userID,itemID,rbyRow,rbyColumn);
      }
 else {
        MatrixUtils.addTo(userID,itemID,value,rbyRow,rbyColumn);
      }
      if (knownItemIDs != null) {
        FastIDSet itemIDs=knownItemIDs.get(userID);
        if (Float.isNaN(value)) {
          if (itemIDs != null) {
            itemIDs.remove(itemID);
            if (itemIDs.isEmpty()) {
              knownItemIDs.remove(userID);
            }
          }
        }
 else {
          if (itemIDs == null) {
            itemIDs=new FastIDSet();
            knownItemIDs.put(userID,itemIDs);
          }
          itemIDs.add(itemID);
        }
      }
      if (lines % 1000000 == 0) {
        log.info("String_Node_Str",lines);
      }
    }
  }
  removeSmall(rbyRow);
  removeSmall(rbyColumn);
}