Program: 9621
Project: 9621
Buggy source:
public void resolveStatements(){
  if (binding == null || ignoreFurtherInvestigation)   return;
  ClassScope upperScope=(ClassScope)scope.parent;
  modifiers=binding.modifiers=checkAndSetModifiers(modifiers,upperScope);
  if (kind == AdviceKind.AfterThrowing && extraArgument != null) {
    TypeBinding argTb=extraArgument.binding.type;
    TypeBinding expectedTb=upperScope.getJavaLangThrowable();
    if (!argTb.isCompatibleWith(expectedTb)) {
      scope.problemReporter().typeMismatchError(argTb,expectedTb,extraArgument);
      ignoreFurtherInvestigation=true;
      return;
    }
  }
  pointcutDesignator.finishResolveTypes(this,this.binding,baseArgumentCount,upperScope.referenceContext.binding);
  if (binding == null || ignoreFurtherInvestigation)   return;
  if (kind == AdviceKind.Around) {
    ReferenceBinding[] exceptions=new ReferenceBinding[]{upperScope.getJavaLangThrowable()};
    proceedMethodBinding=new MethodBinding(Modifier.STATIC,"String_Node_Str".toCharArray(),binding.returnType,resize(baseArgumentCount + 1,binding.parameters),exceptions,binding.declaringClass);
    proceedMethodBinding.selector=CharArrayOps.concat(selector,proceedMethodBinding.selector);
  }
  super.resolveStatements();
  if (binding != null)   determineExtraArgumentFlags();
  if (kind == AdviceKind.Around) {
    int n=proceedCalls.size();
    EclipseFactory world=EclipseFactory.fromScopeLookupEnvironment(upperScope);
    formalsUnchangedToProceed=new boolean[baseArgumentCount];
    proceedCallSignatures=new ResolvedMember[0];
    proceedInInners=false;
    declaredExceptions=new TypeX[0];
    for (int i=0; i < n; i++) {
      Proceed call=(Proceed)proceedCalls.get(i);
      if (call.inInner) {
        proceedInInners=true;
      }
    }
    if (!proceedInInners) {
      PrivilegedHandler handler=(PrivilegedHandler)upperScope.referenceContext.binding.privilegedHandler;
      if (handler == null) {
        handler=new PrivilegedHandler((AspectDeclaration)upperScope.referenceContext);
        upperScope.referenceContext.binding.privilegedHandler=handler;
      }
      this.traverse(new MakeDeclsPublicVisitor(),(ClassScope)null);
      AccessForInlineVisitor v=new AccessForInlineVisitor((AspectDeclaration)upperScope.referenceContext,handler);
      this.traverse(v,(ClassScope)null);
      if (!v.isInlinable)       proceedInInners=true;
    }
  }
}

Fixed version (ground truth):
public void resolveStatements(){
  if (binding == null || ignoreFurtherInvestigation)   return;
  ClassScope upperScope=(ClassScope)scope.parent;
  modifiers=binding.modifiers=checkAndSetModifiers(modifiers,upperScope);
  if (kind == AdviceKind.AfterThrowing && extraArgument != null) {
    TypeBinding argTb=extraArgument.binding.type;
    TypeBinding expectedTb=upperScope.getJavaLangThrowable();
    if (!argTb.isCompatibleWith(expectedTb)) {
      scope.problemReporter().typeMismatchError(argTb,expectedTb,extraArgument);
      ignoreFurtherInvestigation=true;
      return;
    }
  }
  pointcutDesignator.finishResolveTypes(this,this.binding,baseArgumentCount,upperScope.referenceContext.binding);
  if (binding == null || ignoreFurtherInvestigation)   return;
  if (kind == AdviceKind.Around) {
    ReferenceBinding[] exceptions=new ReferenceBinding[]{upperScope.getJavaLangThrowable()};
    proceedMethodBinding=new MethodBinding(Modifier.STATIC,"String_Node_Str".toCharArray(),binding.returnType,resize(baseArgumentCount + 1,binding.parameters),exceptions,binding.declaringClass);
    proceedMethodBinding.selector=CharArrayOps.concat(selector,proceedMethodBinding.selector);
  }
  super.resolveStatements();
  if (binding != null)   determineExtraArgumentFlags();
  if (kind == AdviceKind.Around) {
    int n=proceedCalls.size();
    EclipseFactory world=EclipseFactory.fromScopeLookupEnvironment(upperScope);
    formalsUnchangedToProceed=new boolean[baseArgumentCount];
    proceedCallSignatures=new ResolvedMember[0];
    proceedInInners=false;
    declaredExceptions=new TypeX[0];
    for (int i=0; i < n; i++) {
      Proceed call=(Proceed)proceedCalls.get(i);
      if (call.inInner) {
        proceedInInners=true;
      }
    }
    if (!proceedInInners) {
      PrivilegedHandler handler=(PrivilegedHandler)upperScope.referenceContext.binding.privilegedHandler;
      if (handler == null) {
        handler=new PrivilegedHandler((AspectDeclaration)upperScope.referenceContext);
      }
      this.traverse(new MakeDeclsPublicVisitor(),(ClassScope)null);
      AccessForInlineVisitor v=new AccessForInlineVisitor((AspectDeclaration)upperScope.referenceContext,handler);
      this.traverse(v,(ClassScope)null);
      if (!v.isInlinable)       proceedInInners=true;
    }
  }
}