Program: 9436
Project: 9436
Buggy source:
public void resolve(ClassScope upperScope){
  if (munger == null)   ignoreFurtherInvestigation=true;
  if (ignoreFurtherInvestigation)   return;
  EclipseFactory world=EclipseFactory.fromScopeLookupEnvironment(upperScope);
  ResolvedMember sig=munger.getSignature();
  TypeX aspectType=EclipseFactory.fromBinding(upperScope.referenceContext.binding);
  if (sig.getReturnType() == ResolvedTypeX.VOID || (sig.getReturnType().isArray() && (sig.getReturnType().getComponentType() == ResolvedTypeX.VOID))) {
    upperScope.problemReporter().signalError(sourceStart,sourceEnd,"String_Node_Str");
  }
  if (initialization != null && initialization instanceof ArrayInitializer) {
    ArrayAllocationExpression aae=new ArrayAllocationExpression();
    aae.initializer=(ArrayInitializer)initialization;
    ArrayBinding arrayType=(ArrayBinding)world.makeTypeBinding(sig.getReturnType());
    aae.type=AstUtil.makeTypeReference(arrayType.leafComponentType());
    aae.sourceStart=initialization.sourceStart;
    aae.sourceEnd=initialization.sourceEnd;
    aae.dimensions=new Expression[arrayType.dimensions];
    initialization=aae;
  }
  if (initialization == null) {
    this.statements=new Statement[]{new ReturnStatement(null,0,0)};
  }
 else   if (!onTypeBinding.isInterface()) {
    FieldBinding interField=world.makeFieldBinding(AjcMemberMaker.interFieldClassField(sig,aspectType));
    Reference ref=new KnownFieldReference(interField,0);
    this.statements=new Statement[]{new Assignment(ref,initialization,initialization.sourceEnd)};
  }
 else {
    MethodBinding writeMethod=world.makeMethodBinding(AjcMemberMaker.interFieldInterfaceSetter(sig,sig.getDeclaringType().resolve(world.getWorld()),aspectType));
    if (Modifier.isStatic(declaredModifiers)) {
      this.statements=new Statement[]{new KnownMessageSend(writeMethod,AstUtil.makeNameReference(writeMethod.declaringClass),new Expression[]{initialization})};
    }
 else {
      this.statements=new Statement[]{new KnownMessageSend(writeMethod,AstUtil.makeLocalVariableReference(arguments[0].binding),new Expression[]{initialization})};
    }
  }
  super.resolve(upperScope);
}

Fixed version (ground truth):
public void resolve(ClassScope upperScope){
  if (munger == null)   ignoreFurtherInvestigation=true;
  if (ignoreFurtherInvestigation)   return;
  EclipseFactory world=EclipseFactory.fromScopeLookupEnvironment(upperScope);
  ResolvedMember sig=munger.getSignature();
  TypeX aspectType=EclipseFactory.fromBinding(upperScope.referenceContext.binding);
  if (sig.getReturnType() == ResolvedTypeX.VOID || (sig.getReturnType().isArray() && (sig.getReturnType().getComponentType() == ResolvedTypeX.VOID))) {
    upperScope.problemReporter().signalError(sourceStart,sourceEnd,"String_Node_Str");
  }
  if (initialization != null && initialization instanceof ArrayInitializer) {
    ArrayAllocationExpression aae=new ArrayAllocationExpression();
    aae.initializer=(ArrayInitializer)initialization;
    ArrayBinding arrayType=(ArrayBinding)world.makeTypeBinding(sig.getReturnType());
    aae.type=AstUtil.makeTypeReference(arrayType.leafComponentType());
    aae.sourceStart=initialization.sourceStart;
    aae.sourceEnd=initialization.sourceEnd;
    aae.dimensions=new Expression[arrayType.dimensions];
    initialization=aae;
  }
  if (initialization == null) {
    this.statements=new Statement[]{new ReturnStatement(null,0,0)};
  }
 else   if (!onTypeBinding.isInterface()) {
    MethodBinding writeMethod=world.makeMethodBinding(AjcMemberMaker.interFieldSetDispatcher(sig,aspectType));
    if (Modifier.isStatic(declaredModifiers)) {
      this.statements=new Statement[]{new KnownMessageSend(writeMethod,AstUtil.makeNameReference(writeMethod.declaringClass),new Expression[]{initialization})};
    }
 else {
      this.statements=new Statement[]{new KnownMessageSend(writeMethod,AstUtil.makeNameReference(writeMethod.declaringClass),new Expression[]{AstUtil.makeLocalVariableReference(arguments[0].binding),initialization})};
    }
  }
 else {
    MethodBinding writeMethod=world.makeMethodBinding(AjcMemberMaker.interFieldInterfaceSetter(sig,sig.getDeclaringType().resolve(world.getWorld()),aspectType));
    if (Modifier.isStatic(declaredModifiers)) {
      this.statements=new Statement[]{new KnownMessageSend(writeMethod,AstUtil.makeNameReference(writeMethod.declaringClass),new Expression[]{initialization})};
    }
 else {
      this.statements=new Statement[]{new KnownMessageSend(writeMethod,AstUtil.makeLocalVariableReference(arguments[0].binding),new Expression[]{initialization})};
    }
  }
  super.resolve(upperScope);
}