Program: 53267
Project: 53267
Buggy source:
/** 
 * @param inputPathsToSplit Input paths that would otherwise have been passed to a single dx --dexinvocation.
 * @param secondaryJarMetaPath Output location for the metadata text file describing eachsecondary jar artifact.
 * @param primaryJarPath Output path for the primary jar file.
 * @param secondaryJarDir Output location for secondary jar files.  Note that this directory maybe empty if no secondary jar files are needed.
 * @param secondaryJarPattern Filename pattern for secondary jar files.  Pattern contains one %dargument representing the enumerated secondary zip count (starting at 1).
 * @param proguardFullConfigFile Path to the full generated ProGuard configuration, generatedby the -printconfiguration flag.  This is part of the *output* of ProGuard.
 * @param proguardMappingFile Path to the mapping file generated by ProGuard's obfuscation.
 * @param primaryDexPatterns Set of substrings that, when matched, will cause individual inputclass or resource files to be placed into the primary jar (and thus the primary dex output).
 * @param useLinearAllocSplitDex If true, {@link com.facebook.buck.dalvik.DalvikAwareZipSplitter} will be used. Also,{@code linearAllocHardLimit} must have a positive value in this case.
 */
public SplitZipStep(Set<Path> inputPathsToSplit,Path secondaryJarMetaPath,Path primaryJarPath,Path secondaryJarDir,String secondaryJarPattern,Optional<Path> proguardFullConfigFile,Optional<Path> proguardMappingFile,Set<String> primaryDexPatterns,Optional<Path> primaryDexClassesFile,ZipSplitter.DexSplitStrategy dexSplitStrategy,DexStore dexStore,Path pathToReportDir,boolean useLinearAllocSplitDex,long linearAllocHardLimit){
  this.inputPathsToSplit=ImmutableSet.copyOf(inputPathsToSplit);
  this.secondaryJarMetaPath=Preconditions.checkNotNull(secondaryJarMetaPath);
  this.primaryJarPath=Preconditions.checkNotNull(primaryJarPath);
  this.secondaryJarDir=Preconditions.checkNotNull(secondaryJarDir);
  this.secondaryJarPattern=Preconditions.checkNotNull(secondaryJarPattern);
  this.proguardFullConfigFile=Preconditions.checkNotNull(proguardFullConfigFile);
  this.proguardMappingFile=Preconditions.checkNotNull(proguardMappingFile);
  this.primaryDexPatterns=ImmutableSet.copyOf(primaryDexPatterns);
  this.primaryDexClassesFile=Preconditions.checkNotNull(primaryDexClassesFile);
  this.dexSplitStrategy=Preconditions.checkNotNull(dexSplitStrategy);
  this.dexStore=Preconditions.checkNotNull(dexStore);
  this.pathToReportDir=Preconditions.checkNotNull(pathToReportDir);
  this.useLinearAllocSplitDex=useLinearAllocSplitDex;
  this.linearAllocHardLimit=linearAllocHardLimit;
  this.stepFinished=false;
  Preconditions.checkArgument(proguardFullConfigFile.isPresent() == proguardMappingFile.isPresent(),"String_Node_Str");
}

Fixed version (ground truth):
/** 
 * @param inputPathsToSplit Input paths that would otherwise have been passed to a single dx --dexinvocation.
 * @param secondaryJarMetaPath Output location for the metadata text file describing eachsecondary jar artifact.
 * @param primaryJarPath Output path for the primary jar file.
 * @param secondaryJarDir Output location for secondary jar files.  Note that this directory maybe empty if no secondary jar files are needed.
 * @param secondaryJarPattern Filename pattern for secondary jar files.  Pattern contains one %dargument representing the enumerated secondary zip count (starting at 1).
 * @param proguardFullConfigFile Path to the full generated ProGuard configuration, generatedby the -printconfiguration flag.  This is part of the *output* of ProGuard.
 * @param proguardMappingFile Path to the mapping file generated by ProGuard's obfuscation.
 * @param primaryDexPatterns Set of substrings that, when matched, will cause individual inputclass or resource files to be placed into the primary jar (and thus the primary dex output).
 * @param useLinearAllocSplitDex If true, {@link com.facebook.buck.dalvik.DalvikAwareZipSplitter}will be used. Also,  {@code linearAllocHardLimit} must have a positive value in this case.
 */
public SplitZipStep(Set<Path> inputPathsToSplit,Path secondaryJarMetaPath,Path primaryJarPath,Path secondaryJarDir,String secondaryJarPattern,Optional<Path> proguardFullConfigFile,Optional<Path> proguardMappingFile,Set<String> primaryDexPatterns,Optional<Path> primaryDexClassesFile,ZipSplitter.DexSplitStrategy dexSplitStrategy,DexStore dexStore,Path pathToReportDir,boolean useLinearAllocSplitDex,long linearAllocHardLimit){
  this.inputPathsToSplit=ImmutableSet.copyOf(inputPathsToSplit);
  this.secondaryJarMetaPath=Preconditions.checkNotNull(secondaryJarMetaPath);
  this.primaryJarPath=Preconditions.checkNotNull(primaryJarPath);
  this.secondaryJarDir=Preconditions.checkNotNull(secondaryJarDir);
  this.secondaryJarPattern=Preconditions.checkNotNull(secondaryJarPattern);
  this.proguardFullConfigFile=Preconditions.checkNotNull(proguardFullConfigFile);
  this.proguardMappingFile=Preconditions.checkNotNull(proguardMappingFile);
  this.primaryDexPatterns=ImmutableSet.copyOf(primaryDexPatterns);
  this.primaryDexClassesFile=Preconditions.checkNotNull(primaryDexClassesFile);
  this.dexSplitStrategy=Preconditions.checkNotNull(dexSplitStrategy);
  this.dexStore=Preconditions.checkNotNull(dexStore);
  this.pathToReportDir=Preconditions.checkNotNull(pathToReportDir);
  this.useLinearAllocSplitDex=useLinearAllocSplitDex;
  this.linearAllocHardLimit=linearAllocHardLimit;
  this.stepFinished=false;
  Preconditions.checkArgument(proguardFullConfigFile.isPresent() == proguardMappingFile.isPresent(),"String_Node_Str");
}