Program: 40508
Project: 40508
Buggy source:
/** 
 * Check to see if a particular call site should be bypassed, before checking normal resolution of the receiver.
 * @throws IllegalArgumentException if site is null
 */
public IMethod getCalleeTarget(CGNode caller,CallSiteReference site,IClass dispatchType){
  if (site == null) {
    throw new IllegalArgumentException("String_Node_Str");
  }
  MethodReference ref=site.getDeclaredTarget();
  IMethod resolved=null;
  if (ClassHierarchyMethodTargetSelector.feasibleChaResolution(cha,site,dispatchType)) {
    if (site.isVirtual() || site.isInterface()) {
      if (dispatchType != null) {
        resolved=cha.resolveMethod(dispatchType,ref.getSelector());
      }
    }
 else {
      IClass computedDispatchType=cha.lookupClass(site.getDeclaredTarget().getDeclaringClass());
      if (computedDispatchType != null) {
        resolved=cha.resolveMethod(computedDispatchType,ref.getSelector());
      }
    }
  }
  IMethod target=(resolved == null) ? findOrCreateSyntheticMethod(ref,site.isStatic()) : getBypassInternal(resolved,site.isStatic());
  if (DEBUG) {
    System.err.println("String_Node_Str" + target);
  }
  if (target != null) {
    return target;
  }
 else {
    if (canIgnore(site.getDeclaredTarget())) {
      if (DEBUG)       System.err.println("String_Node_Str" + site);
      return null;
    }
    target=parent.getCalleeTarget(caller,site,dispatchType);
    if (DEBUG) {
      System.err.println("String_Node_Str" + target);
    }
    if (target != null) {
      IMethod bypassTarget=getBypassInternal(target,site.isStatic());
      if (DEBUG)       System.err.println("String_Node_Str" + target);
      return (bypassTarget == null) ? target : bypassTarget;
    }
 else     return target;
  }
}

Fixed version (ground truth):
/** 
 * Check to see if a particular call site should be bypassed, before checking normal resolution of the receiver.
 * @throws IllegalArgumentException if site is null
 */
public IMethod getCalleeTarget(CGNode caller,CallSiteReference site,IClass dispatchType){
  if (site == null) {
    throw new IllegalArgumentException("String_Node_Str");
  }
  MethodReference ref=site.getDeclaredTarget();
  IMethod resolved=null;
  if (ClassHierarchyMethodTargetSelector.feasibleChaResolution(cha,site,dispatchType)) {
    if (site.isVirtual() || site.isInterface()) {
      if (dispatchType != null) {
        resolved=cha.resolveMethod(dispatchType,ref.getSelector());
      }
    }
 else {
      IClass computedDispatchType=cha.lookupClass(site.getDeclaredTarget().getDeclaringClass());
      if (computedDispatchType != null) {
        resolved=cha.resolveMethod(computedDispatchType,ref.getSelector());
      }
    }
  }
  IMethod target=(resolved == null) ? findOrCreateSyntheticMethod(ref,site.isStatic()) : getBypassInternal(resolved,site.isStatic());
  if (DEBUG) {
    System.err.println("String_Node_Str" + target);
  }
  if (target != null) {
    return target;
  }
 else {
    if (canIgnore(site.getDeclaredTarget())) {
      return findOrCreateSyntheticMethod(site.getDeclaredTarget(),site.isStatic());
    }
    target=parent.getCalleeTarget(caller,site,dispatchType);
    if (DEBUG) {
      System.err.println("String_Node_Str" + target);
    }
    if (target != null) {
      IMethod bypassTarget=getBypassInternal(target,site.isStatic());
      if (DEBUG)       System.err.println("String_Node_Str" + target);
      return (bypassTarget == null) ? target : bypassTarget;
    }
 else     return target;
  }
}