Program: 9487
Project: 9487
Buggy source:
/** 
 * Create an adapter, and tell it everything it needs to now to drive the AspectJ parts of a compile cycle.
 * @param compiler	the JDT compiler that produces class files from source
 * @param isBatchCompile  true if this is a full build (non-incremental)
 * @param world  the bcelWorld used for type resolution during weaving
 * @param weaver the weaver
 * @param intRequestor  recipient of interim compilation results from compiler (pre-weave)
 * @param outputFileNameProvider implementor of a strategy providing output file names for results
 * @param binarySourceEntries binary source that we didn't compile, but that we need to weave
 * @param resultSetForFullWeave if we are doing an incremental build, and the weaver determinesthat we need to weave the world, this is the set of intermediate results that will be passed to the weaver.
 * @param isXNoWeave
 */
public AjCompilerAdapter(Compiler compiler,boolean isBatchCompile,BcelWorld world,BcelWeaver weaver,EclipseFactory eFactory,IIntermediateResultsRequestor intRequestor,IProgressListener progressListener,IOutputClassFileNameProvider outputFileNameProvider,Map binarySourceEntries,Collection resultSetForFullWeave,boolean isXNoWeave){
  this.compiler=compiler;
  this.isBatchCompile=isBatchCompile;
  this.weaver=weaver;
  this.intermediateResultsRequestor=intRequestor;
  this.progressListener=progressListener;
  this.outputFileNameProvider=outputFileNameProvider;
  this.isXNoWeave=isXNoWeave;
  this.resultSetForFullWeave=resultSetForFullWeave;
  this.eWorld=eFactory;
  IMessageHandler msgHandler=world.getMessageHandler();
  weaverMessageHandler=new WeaverMessageHandler(msgHandler,compiler);
  world.setMessageHandler(weaverMessageHandler);
  addBinarySource(binarySourceEntries);
}

Fixed version (ground truth):
/** 
 * Create an adapter, and tell it everything it needs to now to drive the AspectJ parts of a compile cycle.
 * @param compiler	the JDT compiler that produces class files from source
 * @param isBatchCompile  true if this is a full build (non-incremental)
 * @param world  the bcelWorld used for type resolution during weaving
 * @param weaver the weaver
 * @param intRequestor  recipient of interim compilation results from compiler (pre-weave)
 * @param outputFileNameProvider implementor of a strategy providing output file names for results
 * @param binarySourceEntries binary source that we didn't compile, but that we need to weave
 * @param resultSetForFullWeave if we are doing an incremental build, and the weaver determinesthat we need to weave the world, this is the set of intermediate results that will be passed to the weaver.
 * @param isXNoWeave
 */
public AjCompilerAdapter(Compiler compiler,boolean isBatchCompile,BcelWorld world,BcelWeaver weaver,EclipseFactory eFactory,IIntermediateResultsRequestor intRequestor,IProgressListener progressListener,IOutputClassFileNameProvider outputFileNameProvider,IBinarySourceProvider binarySourceProvider,Map fullBinarySourceEntries,Collection resultSetForFullWeave,boolean isXNoWeave){
  this.compiler=compiler;
  this.isBatchCompile=isBatchCompile;
  this.weaver=weaver;
  this.intermediateResultsRequestor=intRequestor;
  this.progressListener=progressListener;
  this.outputFileNameProvider=outputFileNameProvider;
  this.binarySourceProvider=binarySourceProvider;
  this.isXNoWeave=isXNoWeave;
  this.binarySourceSetForFullWeave=fullBinarySourceEntries;
  this.resultSetForFullWeave=resultSetForFullWeave;
  this.eWorld=eFactory;
  IMessageHandler msgHandler=world.getMessageHandler();
  weaverMessageHandler=new WeaverMessageHandler(msgHandler,compiler);
  world.setMessageHandler(weaverMessageHandler);
}