Program: 53080
Project: 53080
Buggy source:
private DefaultJavaLibrary(BuildRuleParams params,final SourcePathResolver resolver,Set<? extends SourcePath> srcs,Set<? extends SourcePath> resources,Optional<Path> generatedSourceFolder,Optional<SourcePath> proguardConfig,ImmutableList<String> postprocessClassesCommands,ImmutableSortedSet<BuildRule> exportedDeps,ImmutableSortedSet<BuildRule> providedDeps,SourcePath abiJar,boolean trackClassUsage,final Supplier<ImmutableSortedSet<SourcePath>> abiClasspath,ImmutableSet<Path> additionalClasspathEntries,CompileToJarStepFactory compileStepFactory,Optional<Path> resourcesRoot,Optional<String> mavenCoords,ImmutableSortedSet<BuildTarget> tests){
  super(params.appendExtraDeps(new Supplier<Iterable<? extends BuildRule>>(){
    @Override public Iterable<? extends BuildRule> get(){
      return resolver.filterBuildRuleInputs(abiClasspath.get());
    }
  }
),resolver);
  this.compileStepFactory=compileStepFactory;
  for (  BuildRule dep : exportedDeps) {
    if (!(dep instanceof JavaLibrary)) {
      throw new HumanReadableException(params.getBuildTarget() + "String_Node_Str" + dep.getBuildTarget()+ "String_Node_Str"+ dep.getType()+ "String_Node_Str"+ "String_Node_Str");
    }
  }
  this.srcs=ImmutableSortedSet.copyOf(srcs);
  this.resources=ImmutableSortedSet.copyOf(resources);
  this.proguardConfig=proguardConfig;
  this.postprocessClassesCommands=postprocessClassesCommands;
  this.exportedDeps=exportedDeps;
  this.providedDeps=providedDeps;
  this.additionalClasspathEntries=FluentIterable.from(additionalClasspathEntries).transform(getProjectFilesystem().getAbsolutifier()).toSet();
  this.resourcesRoot=resourcesRoot;
  this.mavenCoords=mavenCoords;
  this.tests=tests;
  this.abiJar=abiJar;
  this.trackClassUsage=trackClassUsage;
  if (this.trackClassUsage) {
    this.abiClasspath=new JarArchiveDependencySupplier(abiClasspath,getProjectFilesystem());
  }
 else {
    this.abiClasspath=abiClasspath;
  }
  this.deps=params.getDeps();
  if (!srcs.isEmpty() || !resources.isEmpty()) {
    this.outputJar=Optional.of(getOutputJarPath(getBuildTarget(),getProjectFilesystem()));
  }
 else {
    this.outputJar=Optional.absent();
  }
  this.outputClasspathEntriesSupplier=Suppliers.memoize(new Supplier<ImmutableSetMultimap<JavaLibrary,Path>>(){
    @Override public ImmutableSetMultimap<JavaLibrary,Path> get(){
      return JavaLibraryClasspathProvider.getOutputClasspathEntries(DefaultJavaLibrary.this,getResolver(),sourcePathForOutputJar());
    }
  }
);
  this.transitiveClasspathEntriesSupplier=Suppliers.memoize(new Supplier<ImmutableSetMultimap<JavaLibrary,Path>>(){
    @Override public ImmutableSetMultimap<JavaLibrary,Path> get(){
      return JavaLibraryClasspathProvider.getTransitiveClasspathEntries(DefaultJavaLibrary.this,getResolver(),sourcePathForOutputJar());
    }
  }
);
  this.transitiveClasspathDepsSupplier=Suppliers.memoize(new Supplier<ImmutableSet<JavaLibrary>>(){
    @Override public ImmutableSet<JavaLibrary> get(){
      return JavaLibraryClasspathProvider.getTransitiveClasspathDeps(DefaultJavaLibrary.this,sourcePathForOutputJar());
    }
  }
);
  this.declaredClasspathEntriesSupplier=Suppliers.memoize(new Supplier<ImmutableSetMultimap<JavaLibrary,Path>>(){
    @Override public ImmutableSetMultimap<JavaLibrary,Path> get(){
      return JavaLibraryClasspathProvider.getDeclaredClasspathEntries(DefaultJavaLibrary.this);
    }
  }
);
  this.buildOutputInitializer=new BuildOutputInitializer<>(params.getBuildTarget(),this);
  this.generatedSourceFolder=generatedSourceFolder;
}

Fixed version (ground truth):
private DefaultJavaLibrary(BuildRuleParams params,final SourcePathResolver resolver,Set<? extends SourcePath> srcs,Set<? extends SourcePath> resources,Optional<Path> generatedSourceFolder,Optional<SourcePath> proguardConfig,ImmutableList<String> postprocessClassesCommands,ImmutableSortedSet<BuildRule> exportedDeps,ImmutableSortedSet<BuildRule> providedDeps,SourcePath abiJar,boolean trackClassUsage,final JarArchiveDependencySupplier abiClasspath,ImmutableSet<Path> additionalClasspathEntries,CompileToJarStepFactory compileStepFactory,Optional<Path> resourcesRoot,Optional<String> mavenCoords,ImmutableSortedSet<BuildTarget> tests){
  super(params.appendExtraDeps(new Supplier<Iterable<? extends BuildRule>>(){
    @Override public Iterable<? extends BuildRule> get(){
      return resolver.filterBuildRuleInputs(abiClasspath.get());
    }
  }
),resolver);
  this.compileStepFactory=compileStepFactory;
  for (  BuildRule dep : exportedDeps) {
    if (!(dep instanceof JavaLibrary)) {
      throw new HumanReadableException(params.getBuildTarget() + "String_Node_Str" + dep.getBuildTarget()+ "String_Node_Str"+ dep.getType()+ "String_Node_Str"+ "String_Node_Str");
    }
  }
  this.srcs=ImmutableSortedSet.copyOf(srcs);
  this.resources=ImmutableSortedSet.copyOf(resources);
  this.proguardConfig=proguardConfig;
  this.postprocessClassesCommands=postprocessClassesCommands;
  this.exportedDeps=exportedDeps;
  this.providedDeps=providedDeps;
  this.additionalClasspathEntries=FluentIterable.from(additionalClasspathEntries).transform(getProjectFilesystem().getAbsolutifier()).toSet();
  this.resourcesRoot=resourcesRoot;
  this.mavenCoords=mavenCoords;
  this.tests=tests;
  this.abiJar=abiJar;
  this.trackClassUsage=trackClassUsage;
  this.abiClasspath=abiClasspath;
  this.deps=params.getDeps();
  if (!srcs.isEmpty() || !resources.isEmpty()) {
    this.outputJar=Optional.of(getOutputJarPath(getBuildTarget(),getProjectFilesystem()));
  }
 else {
    this.outputJar=Optional.absent();
  }
  this.outputClasspathEntriesSupplier=Suppliers.memoize(new Supplier<ImmutableSetMultimap<JavaLibrary,Path>>(){
    @Override public ImmutableSetMultimap<JavaLibrary,Path> get(){
      return JavaLibraryClasspathProvider.getOutputClasspathEntries(DefaultJavaLibrary.this,getResolver(),sourcePathForOutputJar());
    }
  }
);
  this.transitiveClasspathEntriesSupplier=Suppliers.memoize(new Supplier<ImmutableSetMultimap<JavaLibrary,Path>>(){
    @Override public ImmutableSetMultimap<JavaLibrary,Path> get(){
      return JavaLibraryClasspathProvider.getTransitiveClasspathEntries(DefaultJavaLibrary.this,getResolver(),sourcePathForOutputJar());
    }
  }
);
  this.transitiveClasspathDepsSupplier=Suppliers.memoize(new Supplier<ImmutableSet<JavaLibrary>>(){
    @Override public ImmutableSet<JavaLibrary> get(){
      return JavaLibraryClasspathProvider.getTransitiveClasspathDeps(DefaultJavaLibrary.this,sourcePathForOutputJar());
    }
  }
);
  this.declaredClasspathEntriesSupplier=Suppliers.memoize(new Supplier<ImmutableSetMultimap<JavaLibrary,Path>>(){
    @Override public ImmutableSetMultimap<JavaLibrary,Path> get(){
      return JavaLibraryClasspathProvider.getDeclaredClasspathEntries(DefaultJavaLibrary.this);
    }
  }
);
  this.buildOutputInitializer=new BuildOutputInitializer<>(params.getBuildTarget(),this);
  this.generatedSourceFolder=generatedSourceFolder;
}