Program: 9714
Project: 9714
Buggy source:
public void resolveBindings(IScope scope,Bindings bindings){
  if (onTypeSymbolic != null) {
    onType=onTypeSymbolic.resolveExactType(scope,bindings);
  }
  ResolvedTypeX searchType;
  if (onType != null) {
    searchType=scope.getWorld().resolve(onType);
  }
 else {
    searchType=scope.getEnclosingType();
  }
  arguments.resolveBindings(scope,bindings,true,true);
  ResolvedPointcutDefinition pointcutDef=searchType.findPointcut(name);
  if (onType == null) {
    while (true) {
      TypeX declaringType=searchType.getDeclaringType();
      if (declaringType == null)       break;
      searchType=declaringType.resolve(scope.getWorld());
      pointcutDef=searchType.findPointcut(name);
      if (pointcutDef != null) {
        onType=searchType;
        break;
      }
    }
  }
  if (pointcutDef == null) {
    scope.message(IMessage.ERROR,this,"String_Node_Str");
    return;
  }
  if (!pointcutDef.isVisible(scope.getEnclosingType())) {
    scope.message(IMessage.ERROR,this,"String_Node_Str" + pointcutDef + "String_Node_Str");
    return;
  }
  if (Modifier.isAbstract(pointcutDef.getModifiers())) {
    if (onType != null) {
      scope.message(IMessage.ERROR,this,"String_Node_Str");
      return;
    }
 else     if (!searchType.isAbstract()) {
      scope.message(IMessage.ERROR,this,"String_Node_Str");
      return;
    }
  }
  ResolvedTypeX[] parameterTypes=scope.getWorld().resolve(pointcutDef.getParameterTypes());
  if (parameterTypes.length != arguments.size()) {
    scope.message(IMessage.ERROR,this,"String_Node_Str" + parameterTypes.length + "String_Node_Str"+ arguments.size());
    return;
  }
  for (int i=0, len=arguments.size(); i < len; i++) {
    TypePattern p=arguments.get(i);
    if (p == TypePattern.NO) {
      scope.message(IMessage.ERROR,this,"String_Node_Str");
      return;
    }
    if (!p.matchesSubtypes(parameterTypes[i]) && !p.getExactType().equals(TypeX.OBJECT)) {
      scope.message(IMessage.ERROR,p,"String_Node_Str" + parameterTypes[i].getName() + "String_Node_Str"+ p);
      return;
    }
  }
}

Fixed version (ground truth):
public void resolveBindings(IScope scope,Bindings bindings){
  if (onTypeSymbolic != null) {
    onType=onTypeSymbolic.resolveExactType(scope,bindings);
  }
  ResolvedTypeX searchType;
  if (onType != null) {
    searchType=scope.getWorld().resolve(onType);
  }
 else {
    searchType=scope.getEnclosingType();
  }
  arguments.resolveBindings(scope,bindings,true,true);
  ResolvedPointcutDefinition pointcutDef=searchType.findPointcut(name);
  if (pointcutDef == null && onType == null) {
    while (true) {
      TypeX declaringType=searchType.getDeclaringType();
      if (declaringType == null)       break;
      searchType=declaringType.resolve(scope.getWorld());
      pointcutDef=searchType.findPointcut(name);
      if (pointcutDef != null) {
        onType=searchType;
        break;
      }
    }
  }
  if (pointcutDef == null) {
    scope.message(IMessage.ERROR,this,"String_Node_Str");
    return;
  }
  if (!pointcutDef.isVisible(scope.getEnclosingType())) {
    scope.message(IMessage.ERROR,this,"String_Node_Str" + pointcutDef + "String_Node_Str");
    return;
  }
  if (Modifier.isAbstract(pointcutDef.getModifiers())) {
    if (onType != null) {
      scope.message(IMessage.ERROR,this,"String_Node_Str");
      return;
    }
 else     if (!searchType.isAbstract()) {
      scope.message(IMessage.ERROR,this,"String_Node_Str");
      return;
    }
  }
  ResolvedTypeX[] parameterTypes=scope.getWorld().resolve(pointcutDef.getParameterTypes());
  if (parameterTypes.length != arguments.size()) {
    scope.message(IMessage.ERROR,this,"String_Node_Str" + parameterTypes.length + "String_Node_Str"+ arguments.size());
    return;
  }
  for (int i=0, len=arguments.size(); i < len; i++) {
    TypePattern p=arguments.get(i);
    if (p == TypePattern.NO) {
      scope.message(IMessage.ERROR,this,"String_Node_Str");
      return;
    }
    if (!p.matchesSubtypes(parameterTypes[i]) && !p.getExactType().equals(TypeX.OBJECT)) {
      scope.message(IMessage.ERROR,p,"String_Node_Str" + parameterTypes[i].getName() + "String_Node_Str"+ p);
      return;
    }
  }
}