Program: 154202
Project: 154202
Buggy source:
/** 
 * The plan body.
 */
public void body(){
  IDF df=(IDF)SServiceProvider.getService(getScope().getServiceProvider(),IDF.class).get(this);
  IDFServiceDescription sd=df.createDFServiceDescription("String_Node_Str",null,null);
  IDFComponentDescription dfadesc=df.createDFComponentDescription(null,sd);
  ISearchConstraints constraints=df.createSearchConstraints(-1,0);
  IGoal ft=createGoal("String_Node_Str");
  ft.getParameter("String_Node_Str").setValue(dfadesc);
  ft.getParameter("String_Node_Str").setValue(constraints);
  dispatchSubgoalAndWait(ft);
  IDFComponentDescription[] cleaners=(IDFComponentDescription[])ft.getParameterSet("String_Node_Str").getValues();
  while (cleaners == null || cleaners.length < CleanerLocationManager.TOTAL_CLEANERS) {
    waitFor(100);
    ft=createGoal("String_Node_Str");
    ft.getParameter("String_Node_Str").setValue(dfadesc);
    ft.getParameter("String_Node_Str").setValue(constraints);
    dispatchSubgoalAndWait(ft);
    cleaners=(IDFComponentDescription[])ft.getParameterSet("String_Node_Str").getValues();
  }
  for (int i=0; i < cleaners.length; i++) {
    IMessageEvent mevent=createMessageEvent("String_Node_Str");
    mevent.getParameterSet(SFipa.RECEIVERS).addValue(cleaners[i].getName());
    IMessageEvent reply=null;
    try {
      reply=sendMessageAndWait(mevent,1000);
      System.out.println(reply.toString());
      Ambrosio.cleanersStatus[i]=(String)reply.getParameter(SFipa.CONTENT).getValue();
    }
 catch (    Exception e) {
      Ambrosio.cleanersStatus[i]=Status.UNKNOWN;
    }
  }
  System.out.println("String_Node_Str" + Ambrosio.cleanersStatus[0] + "String_Node_Str"+ Ambrosio.cleanersStatus[1]+ "String_Node_Str"+ Ambrosio.cleanersStatus[2]+ "String_Node_Str"+ Ambrosio.cleanersStatus[3]+ "String_Node_Str");
}

Fixed version (ground truth):
/** 
 * The plan body.
 */
public void body(){
  IDF df=(IDF)SServiceProvider.getService(getScope().getServiceProvider(),IDF.class).get(this);
  IDFServiceDescription sd=df.createDFServiceDescription("String_Node_Str",null,null);
  IDFComponentDescription dfadesc=df.createDFComponentDescription(null,sd);
  ISearchConstraints constraints=df.createSearchConstraints(-1,0);
  IGoal ft=createGoal("String_Node_Str");
  ft.getParameter("String_Node_Str").setValue(dfadesc);
  ft.getParameter("String_Node_Str").setValue(constraints);
  dispatchSubgoalAndWait(ft);
  IDFComponentDescription[] cleaners=(IDFComponentDescription[])ft.getParameterSet("String_Node_Str").getValues();
  while (cleaners == null || cleaners.length < CleanerLocationManager.TOTAL_CLEANERS) {
    waitFor(100);
    ft=createGoal("String_Node_Str");
    ft.getParameter("String_Node_Str").setValue(dfadesc);
    ft.getParameter("String_Node_Str").setValue(constraints);
    dispatchSubgoalAndWait(ft);
    cleaners=(IDFComponentDescription[])ft.getParameterSet("String_Node_Str").getValues();
  }
  for (int i=0; i < cleaners.length; i++) {
    IMessageEvent mevent=createMessageEvent("String_Node_Str");
    mevent.getParameterSet(SFipa.RECEIVERS).addValue(cleaners[i].getName());
    IMessageEvent reply=null;
    try {
      reply=sendMessageAndWait(mevent,1000);
      Ambrosio.cleanersStatus[i]=(String)reply.getParameter(SFipa.CONTENT).getValue();
    }
 catch (    Exception e) {
      Ambrosio.cleanersStatus[i]=Status.UNKNOWN;
    }
  }
  System.out.println("String_Node_Str" + Ambrosio.cleanersStatus[0] + "String_Node_Str"+ Ambrosio.cleanersStatus[1]+ "String_Node_Str"+ Ambrosio.cleanersStatus[2]+ "String_Node_Str"+ Ambrosio.cleanersStatus[3]+ "String_Node_Str");
}