Program: 38240
Project: 38240
Buggy source:
/** 
 * Given a calling node and a call site, return the set of parameters based on which this selector may choose  to specialize contexts.   {@inheritDoc}
 */
@Override public IntSet getRelevantParameters(CGNode caller,CallSiteReference site){
  IntSet ret;
  if (this.parent != null) {
    ret=this.parent.getRelevantParameters(caller,site);
  }
 else {
    ret=EmptyIntSet.instance;
  }
  final MethodReference target=site.getDeclaredTarget();
  if (intentStarters.isStarter(target)) {
    final StartInfo info=intentStarters.getInfo(target);
    final int[] relevant=info.getRelevant();
    if (relevant != null) {
      for (int i=0; i < relevant.length; ++i) {
        ret=IntSetUtil.add(ret,relevant[i]);
      }
    }
    logger.debug("String_Node_Str",site,ret);
  }
 else   if (site.isSpecial() && target.getDeclaringClass().getName().equals(AndroidTypes.IntentName)) {
    final MethodReference mRef=site.getDeclaredTarget();
    final int numArgs=mRef.getNumberOfParameters();
switch (numArgs) {
case 0:
      return EmptyIntSet.instance;
case 1:
    return IntSetUtil.make(new int[]{0,1});
case 2:
  logger.debug("String_Node_Str",site.getDeclaredTarget().getSelector());
return IntSetUtil.make(new int[]{0,1,2});
case 3:
logger.debug("String_Node_Str",site.getDeclaredTarget().getSelector());
return IntSetUtil.make(new int[]{0,1,2,3});
case 4:
logger.debug("String_Node_Str",site.getDeclaredTarget().getSelector());
return IntSetUtil.make(new int[]{0,1,2,3,4});
default :
logger.debug("String_Node_Str",site.getDeclaredTarget().getSelector());
return IntSetUtil.make(new int[]{0,1,2,3,4,5});
}
}
 else if (site.isSpecial() && target.getDeclaringClass().getName().equals(AndroidTypes.IntentSenderName)) {
logger.warn("String_Node_Str");
return IntSetUtil.make(new int[]{0,1});
}
 else if (target.getSelector().equals(Selector.make("String_Node_Str"))) {
logger.debug("String_Node_Str");
return IntSetUtil.make(new int[]{0,1});
}
 else if (target.getSelector().equals(Selector.make("String_Node_Str"))) {
return IntSetUtil.make(new int[]{0,1});
}
 else if (target.getSelector().equals(Selector.make("String_Node_Str"))) {
return IntSetUtil.make(new int[]{0});
}
 else if (target.getSelector().equals(Selector.make("String_Node_Str"))) {
return IntSetUtil.make(new int[]{0,2});
}
 else if (target.getSelector().equals(Selector.make("String_Node_Str"))) {
return IntSetUtil.make(new int[]{0,2});
}
 else if (target.getSelector().equals(Selector.make("String_Node_Str"))) {
return IntSetUtil.make(new int[]{0,2});
}
return ret;
}

Fixed version (ground truth):
/** 
 * Given a calling node and a call site, return the set of parameters based on which this selector may choose  to specialize contexts.   {@inheritDoc}
 */
@Override public IntSet getRelevantParameters(CGNode caller,CallSiteReference site){
  IntSet ret;
  if (this.parent != null) {
    ret=this.parent.getRelevantParameters(caller,site);
  }
 else {
    ret=EmptyIntSet.instance;
  }
  final MethodReference target=site.getDeclaredTarget();
  if (intentStarters.isStarter(target)) {
    final StartInfo info=intentStarters.getInfo(target);
    final int[] relevant=info.getRelevant();
    if (relevant != null) {
      for (int i=0; i < relevant.length; ++i) {
        ret=IntSetUtil.add(ret,relevant[i]);
      }
    }
    logger.debug("String_Node_Str",site,ret);
  }
 else   if (site.isSpecial() && target.getDeclaringClass().getName().equals(AndroidTypes.IntentName)) {
    final MethodReference mRef=site.getDeclaredTarget();
    final int numArgs=mRef.getNumberOfParameters();
switch (numArgs) {
case 0:
      return EmptyIntSet.instance;
case 1:
    return IntSetUtil.make(new int[]{0,1});
case 2:
  logger.debug("String_Node_Str",site.getDeclaredTarget().getSelector());
return IntSetUtil.make(new int[]{0,1,2});
case 3:
logger.debug("String_Node_Str",site.getDeclaredTarget().getSelector());
return IntSetUtil.make(new int[]{0,1,2,3});
case 4:
logger.debug("String_Node_Str",site.getDeclaredTarget().getSelector());
return IntSetUtil.make(new int[]{0,1,2,3,4});
default :
logger.debug("String_Node_Str",site.getDeclaredTarget().getSelector());
return IntSetUtil.make(new int[]{0,1,2,3,4,5});
}
}
 else if (site.isSpecial() && target.getDeclaringClass().getName().equals(AndroidTypes.IntentSenderName)) {
logger.warn("String_Node_Str",target);
if (target.getNumberOfParameters() == 0) {
return IntSetUtil.make(new int[]{0});
}
 else {
return IntSetUtil.make(new int[]{0,1});
}
}
 else if (target.getSelector().equals(Selector.make("String_Node_Str"))) {
logger.debug("String_Node_Str");
return IntSetUtil.make(new int[]{0,1});
}
 else if (target.getSelector().equals(Selector.make("String_Node_Str"))) {
return IntSetUtil.make(new int[]{0,1});
}
 else if (target.getSelector().equals(Selector.make("String_Node_Str"))) {
return IntSetUtil.make(new int[]{0});
}
 else if (target.getSelector().equals(Selector.make("String_Node_Str"))) {
return IntSetUtil.make(new int[]{0,2});
}
 else if (target.getSelector().equals(Selector.make("String_Node_Str"))) {
return IntSetUtil.make(new int[]{0,2});
}
 else if (target.getSelector().equals(Selector.make("String_Node_Str"))) {
return IntSetUtil.make(new int[]{0,2});
}
return ret;
}