Program: 19497
Project: 19497
Buggy source:
/** 
 * Creates inputs from a list of source files, zips and json files. Can be overridden by subclasses who want to pull files from different places.
 * @param files A list of filenames.
 * @param zips A list of zip filenames.
 * @param jsonFiles A list of json encoded files.
 * @param allowStdIn Whether '-' is allowed appear as a filename to representstdin. If true, '-' is only allowed to appear once.
 * @return An array of inputs
 */
protected List<SourceFile> createInputs(List<String> files,List<String> zips,List<JsonFileSpec> jsonFiles,boolean allowStdIn) throws FlagUsageException, IOException {
  List<SourceFile> inputs=new ArrayList<>(files.size());
  boolean usingStdin=false;
  for (  String filename : files) {
    if (!"String_Node_Str".equals(filename)) {
      SourceFile newFile=SourceFile.fromFile(filename,inputCharset);
      inputs.add(newFile);
    }
 else {
      if (!allowStdIn) {
        throw new FlagUsageException("String_Node_Str");
      }
      if (usingStdin) {
        throw new FlagUsageException("String_Node_Str");
      }
      if (!config.outputManifests.isEmpty()) {
        throw new FlagUsageException("String_Node_Str" + "String_Node_Str");
      }
      if (!config.outputBundles.isEmpty()) {
        throw new FlagUsageException("String_Node_Str" + "String_Node_Str");
      }
      this.err.println(WAITING_FOR_INPUT_WARNING);
      inputs.add(SourceFile.fromInputStream("String_Node_Str",this.in,inputCharset));
      usingStdin=true;
    }
  }
  for (  String zipName : zips) {
    if (!"String_Node_Str".equals(zipName)) {
      List<SourceFile> newFiles=SourceFile.fromZipFile(zipName,inputCharset);
      inputs.addAll(newFiles);
    }
  }
  if (jsonFiles != null) {
    for (    JsonFileSpec jsonFile : jsonFiles) {
      inputs.add(SourceFile.fromCode(jsonFile.getPath(),jsonFile.getSrc()));
    }
  }
  return inputs;
}

Fixed version (ground truth):
/** 
 * Creates inputs from a list of source files, zips and json files. Can be overridden by subclasses who want to pull files from different places.
 * @param files A list of flag entries indicates js and zip file names
 * @param jsonFiles A list of json encoded files.
 * @param allowStdIn Whether '-' is allowed appear as a filename to representstdin. If true, '-' is only allowed to appear once.
 * @return An array of inputs
 */
protected List<SourceFile> createInputs(List<FlagEntry<JsSourceType>> files,List<JsonFileSpec> jsonFiles,boolean allowStdIn) throws FlagUsageException, IOException {
  List<SourceFile> inputs=new ArrayList<>(files.size());
  boolean usingStdin=false;
  for (  FlagEntry<JsSourceType> file : files) {
    String filename=file.value;
    if (file.flag == JsSourceType.JS_ZIP) {
      if (!"String_Node_Str".equals(filename)) {
        List<SourceFile> newFiles=SourceFile.fromZipFile(filename,inputCharset);
        inputs.addAll(newFiles);
      }
    }
 else     if (!"String_Node_Str".equals(filename)) {
      SourceFile newFile=SourceFile.fromFile(filename,inputCharset);
      inputs.add(newFile);
    }
 else {
      if (!allowStdIn) {
        throw new FlagUsageException("String_Node_Str");
      }
      if (usingStdin) {
        throw new FlagUsageException("String_Node_Str");
      }
      if (!config.outputManifests.isEmpty()) {
        throw new FlagUsageException("String_Node_Str" + "String_Node_Str");
      }
      if (!config.outputBundles.isEmpty()) {
        throw new FlagUsageException("String_Node_Str" + "String_Node_Str");
      }
      this.err.println(WAITING_FOR_INPUT_WARNING);
      inputs.add(SourceFile.fromInputStream("String_Node_Str",this.in,inputCharset));
      usingStdin=true;
    }
  }
  if (jsonFiles != null) {
    for (    JsonFileSpec jsonFile : jsonFiles) {
      inputs.add(SourceFile.fromCode(jsonFile.getPath(),jsonFile.getSrc()));
    }
  }
  return inputs;
}