Program: 9260
Project: 9260
Buggy source:
/** 
 * 1) Advice must be public 2) Advice must have a void return type if not around advice 3) Advice must not have any other @AspectJ annotations 4) After throwing advice must declare the thrown formal 5) After returning advice must declare the returning formal
 */
private void validateAdvice(MethodDeclaration methodDeclaration){
  if (!insideAspect()) {
    methodDeclaration.scope.problemReporter().signalError(methodDeclaration.sourceStart,methodDeclaration.sourceEnd,"String_Node_Str");
  }
  if (!Modifier.isPublic(methodDeclaration.modifiers)) {
    methodDeclaration.scope.problemReporter().signalError(methodDeclaration.sourceStart,methodDeclaration.sourceEnd,"String_Node_Str");
  }
  if (ajAnnotations.hasMultipleAdviceAnnotations) {
    methodDeclaration.scope.problemReporter().disallowedTargetForAnnotation(ajAnnotations.duplicateAdviceAnnotation);
  }
  if (ajAnnotations.hasPointcutAnnotation) {
    methodDeclaration.scope.problemReporter().disallowedTargetForAnnotation(ajAnnotations.pointcutAnnotation);
  }
  if (ajAnnotations.hasAspectAnnotation) {
    methodDeclaration.scope.problemReporter().disallowedTargetForAnnotation(ajAnnotations.aspectAnnotation);
  }
  if (ajAnnotations.hasAdviceNameAnnotation) {
    methodDeclaration.scope.problemReporter().disallowedTargetForAnnotation(ajAnnotations.adviceNameAnnotation);
  }
  if (ajAnnotations.adviceKind != AdviceKind.Around) {
    ensureVoidReturnType(methodDeclaration);
  }
  if (ajAnnotations.adviceKind == AdviceKind.AfterThrowing) {
    int[] throwingLocation=new int[2];
    String thrownFormal=getStringLiteralFor("String_Node_Str",ajAnnotations.adviceAnnotation,throwingLocation);
    if (thrownFormal != null) {
      Argument[] arguments=methodDeclaration.arguments;
      if (!toArgumentNames(methodDeclaration.arguments).contains(thrownFormal)) {
        methodDeclaration.scope.problemReporter().signalError(methodDeclaration.sourceStart,methodDeclaration.sourceEnd,"String_Node_Str" + thrownFormal + "String_Node_Str");
      }
    }
  }
  if (ajAnnotations.adviceKind == AdviceKind.AfterReturning) {
    int[] throwingLocation=new int[2];
    String returningFormal=getStringLiteralFor("String_Node_Str",ajAnnotations.adviceAnnotation,throwingLocation);
    if (returningFormal != null) {
      if (!toArgumentNames(methodDeclaration.arguments).contains(returningFormal)) {
        methodDeclaration.scope.problemReporter().signalError(methodDeclaration.sourceStart,methodDeclaration.sourceEnd,"String_Node_Str" + returningFormal + "String_Node_Str");
      }
    }
  }
  resolveAndSetPointcut(methodDeclaration,ajAnnotations.adviceAnnotation);
}

Fixed version (ground truth):
/** 
 * 1) Advice must be public 2) Advice must have a void return type if not around advice 3) Advice must not have any other @AspectJ annotations 4) After throwing advice must declare the thrown formal 5) After returning advice must declare the returning formal 6) Advice must not be static
 */
private void validateAdvice(MethodDeclaration methodDeclaration){
  if (!insideAspect()) {
    methodDeclaration.scope.problemReporter().signalError(methodDeclaration.sourceStart,methodDeclaration.sourceEnd,"String_Node_Str");
  }
  if (!Modifier.isPublic(methodDeclaration.modifiers)) {
    methodDeclaration.scope.problemReporter().signalError(methodDeclaration.sourceStart,methodDeclaration.sourceEnd,"String_Node_Str");
  }
  if (Modifier.isStatic(methodDeclaration.modifiers)) {
    methodDeclaration.scope.problemReporter().signalError(methodDeclaration.sourceStart,methodDeclaration.sourceEnd,"String_Node_Str");
  }
  if (ajAnnotations.hasMultipleAdviceAnnotations) {
    methodDeclaration.scope.problemReporter().disallowedTargetForAnnotation(ajAnnotations.duplicateAdviceAnnotation);
  }
  if (ajAnnotations.hasPointcutAnnotation) {
    methodDeclaration.scope.problemReporter().disallowedTargetForAnnotation(ajAnnotations.pointcutAnnotation);
  }
  if (ajAnnotations.hasAspectAnnotation) {
    methodDeclaration.scope.problemReporter().disallowedTargetForAnnotation(ajAnnotations.aspectAnnotation);
  }
  if (ajAnnotations.hasAdviceNameAnnotation) {
    methodDeclaration.scope.problemReporter().disallowedTargetForAnnotation(ajAnnotations.adviceNameAnnotation);
  }
  if (ajAnnotations.adviceKind != AdviceKind.Around) {
    ensureVoidReturnType(methodDeclaration);
  }
  if (ajAnnotations.adviceKind == AdviceKind.AfterThrowing) {
    int[] throwingLocation=new int[2];
    String thrownFormal=getStringLiteralFor("String_Node_Str",ajAnnotations.adviceAnnotation,throwingLocation);
    if (thrownFormal != null) {
      Argument[] arguments=methodDeclaration.arguments;
      if (!toArgumentNames(methodDeclaration.arguments).contains(thrownFormal)) {
        methodDeclaration.scope.problemReporter().signalError(methodDeclaration.sourceStart,methodDeclaration.sourceEnd,"String_Node_Str" + thrownFormal + "String_Node_Str");
      }
    }
  }
  if (ajAnnotations.adviceKind == AdviceKind.AfterReturning) {
    int[] throwingLocation=new int[2];
    String returningFormal=getStringLiteralFor("String_Node_Str",ajAnnotations.adviceAnnotation,throwingLocation);
    if (returningFormal != null) {
      if (!toArgumentNames(methodDeclaration.arguments).contains(returningFormal)) {
        methodDeclaration.scope.problemReporter().signalError(methodDeclaration.sourceStart,methodDeclaration.sourceEnd,"String_Node_Str" + returningFormal + "String_Node_Str");
      }
    }
  }
  resolveAndSetPointcut(methodDeclaration,ajAnnotations.adviceAnnotation);
}