Program: 75688
Project: 75688
Buggy source:
/** 
 * Generate code for the agent.
 * @param CompositeActor The agent generated code from.
 * @return The agent code.
 */
private String _agentCode(CompositeActor actor) throws IllegalActionException {
  String codeString="String_Node_Str";
  String parameterString="String_Node_Str";
  String inputString="String_Node_Str";
  String outputString="String_Node_Str";
  String initString="String_Node_Str";
  String modeString="String_Node_Str";
  String modeParameterString="String_Node_Str";
  String typedModeParameterString="String_Node_Str";
  String flowString="String_Node_Str";
  String invariantString="String_Node_Str";
  LinkedList parameterList=(LinkedList)actor.attributeList(Parameter.class);
  int parameterNumber=parameterList.size();
  ListIterator parameters=parameterList.listIterator();
  Parameter invariantPara=(Parameter)actor.getAttribute("String_Node_Str");
  if (invariantPara != null) {
    invariantString="String_Node_Str" + ((StringToken)invariantPara.getToken()).stringValue() + "String_Node_Str";
  }
  _inPorts=actor.inputPortList().iterator();
  while (_inPorts.hasNext()) {
    if (inputString == "String_Node_Str") {
      inputString+="String_Node_Str" + ((NamedObj)_inPorts.next()).getName();
    }
 else {
      inputString+="String_Node_Str" + ((NamedObj)_inPorts.next()).getName();
    }
  }
  if (inputString != "String_Node_Str")   inputString+="String_Node_Str";
  _outPorts=actor.outputPortList().iterator();
  int outportNumber=actor.outputPortList().size();
  boolean parameterForOutport=false;
  while (parameters.hasNext()) {
    String parameterName=((NamedObj)parameters.next()).getName();
    if (parameterName.startsWith("String_Node_Str")) {
      continue;
    }
    if (parameters.nextIndex() >= (parameterNumber - outportNumber)) {
      parameterForOutport=true;
    }
    if (parameterString == "String_Node_Str") {
      parameterString+="String_Node_Str" + parameterName;
    }
 else {
      parameterString+="String_Node_Str" + parameterName;
    }
    if (parameterForOutport) {
      if (_outPorts.hasNext()) {
        String outportName=((NamedObj)_outPorts.next()).getName();
        if (outputString == "String_Node_Str") {
          outputString+="String_Node_Str" + outportName;
        }
 else {
          outputString+="String_Node_Str" + outportName;
        }
        initString+=outportName + "String_Node_Str" + parameterName+ "String_Node_Str";
      }
    }
 else {
      if (modeParameterString == "String_Node_Str") {
        modeParameterString+=parameterName;
        typedModeParameterString+="String_Node_Str" + parameterName;
      }
 else {
        modeParameterString+="String_Node_Str" + parameterName;
        typedModeParameterString+="String_Node_Str" + parameterName;
      }
    }
  }
  if (outputString != "String_Node_Str")   outputString+="String_Node_Str";
  initString="String_Node_Str" + initString + "String_Node_Str";
  modeString="String_Node_Str" + actor.getName() + "String_Node_Str"+ "String_Node_Str"+ modeParameterString+ "String_Node_Str";
  codeString+="String_Node_Str" + actor.getName() + "String_Node_Str"+ parameterString+ "String_Node_Str"+ _endLine+ "String_Node_Str"+ _endLine+ "String_Node_Str"+ outputString+ _endLine+ "String_Node_Str"+ inputString+ _endLine+ "String_Node_Str"+ initString+ _endLine+ "String_Node_Str"+ modeString+ _endLine+ "String_Node_Str"+ _endLine;
  if (FSMDirector.class.isInstance(actor.getDirector())) {
    _modeCode+="String_Node_Str" + actor.getName() + "String_Node_Str"+ "String_Node_Str"+ typedModeParameterString+ "String_Node_Str"+ _endLine+ "String_Node_Str"+ _endLine+ "String_Node_Str"+ outputString+ _endLine+ "String_Node_Str"+ inputString+ _endLine;
    String subModeString=_fsmModeCode(((FSMDirector)actor.getDirector()).getController(),inputString,outputString);
    _modeCode+="String_Node_Str" + invariantString + _endLine+ "String_Node_Str"+ _endLine+ subModeString;
  }
 else {
    flowString=_graphToText(actor);
    _modeCode+="String_Node_Str" + actor.getName() + "String_Node_Str"+ "String_Node_Str"+ typedModeParameterString+ "String_Node_Str"+ _endLine+ "String_Node_Str"+ _endLine+ "String_Node_Str"+ outputString+ _endLine+ "String_Node_Str"+ inputString+ _endLine+ "String_Node_Str"+ flowString+ _endLine+ "String_Node_Str"+ invariantString+ _endLine+ "String_Node_Str"+ _endLine;
  }
  return codeString;
}

Fixed version (ground truth):
/** 
 * Generate code for the agent.
 * @param CompositeActor The agent generated code from.
 * @return The agent code.
 */
private String _agentCode(CompositeActor actor) throws IllegalActionException {
  String codeString="String_Node_Str";
  String parameterString="String_Node_Str";
  String inputString="String_Node_Str";
  String outputString="String_Node_Str";
  String initString="String_Node_Str";
  String modeString="String_Node_Str";
  String modeParameterString="String_Node_Str";
  String typedModeParameterString="String_Node_Str";
  String flowString="String_Node_Str";
  String invariantString="String_Node_Str";
  LinkedList parameterList=(LinkedList)actor.attributeList(Parameter.class);
  Parameter invariantPara=(Parameter)actor.getAttribute("String_Node_Str");
  if (invariantPara != null) {
    invariantString="String_Node_Str" + ((StringToken)invariantPara.getToken()).stringValue() + "String_Node_Str";
    parameterList.remove(invariantPara);
    ;
  }
  int parameterNumber=parameterList.size();
  ListIterator parameters=parameterList.listIterator();
  _inPorts=actor.inputPortList().iterator();
  while (_inPorts.hasNext()) {
    if (inputString == "String_Node_Str") {
      inputString+="String_Node_Str" + ((NamedObj)_inPorts.next()).getName();
    }
 else {
      inputString+="String_Node_Str" + ((NamedObj)_inPorts.next()).getName();
    }
  }
  if (inputString != "String_Node_Str")   inputString+="String_Node_Str";
  _outPorts=actor.outputPortList().iterator();
  int outportNumber=actor.outputPortList().size();
  boolean parameterForOutport=false;
  while (parameters.hasNext()) {
    String parameterName=((NamedObj)parameters.next()).getName();
    if (parameterName.startsWith("String_Node_Str")) {
      continue;
    }
    if (parameters.nextIndex() > (parameterNumber - outportNumber)) {
      parameterForOutport=true;
    }
    if (parameterString == "String_Node_Str") {
      parameterString+="String_Node_Str" + parameterName;
    }
 else {
      parameterString+="String_Node_Str" + parameterName;
    }
    if (parameterForOutport) {
      if (_outPorts.hasNext()) {
        String outportName=((NamedObj)_outPorts.next()).getName();
        if (outputString == "String_Node_Str") {
          outputString+="String_Node_Str" + outportName;
        }
 else {
          outputString+="String_Node_Str" + outportName;
        }
        initString+=outportName + "String_Node_Str" + parameterName+ "String_Node_Str";
      }
    }
 else {
      if (modeParameterString == "String_Node_Str") {
        modeParameterString+=parameterName;
        typedModeParameterString+="String_Node_Str" + parameterName;
      }
 else {
        modeParameterString+="String_Node_Str" + parameterName;
        typedModeParameterString+="String_Node_Str" + parameterName;
      }
    }
  }
  if (outputString != "String_Node_Str")   outputString+="String_Node_Str";
  initString="String_Node_Str" + initString + "String_Node_Str";
  modeString="String_Node_Str" + actor.getName() + "String_Node_Str"+ "String_Node_Str"+ modeParameterString+ "String_Node_Str";
  codeString+="String_Node_Str" + actor.getName() + "String_Node_Str"+ parameterString+ "String_Node_Str"+ _endLine+ "String_Node_Str"+ _endLine+ "String_Node_Str"+ outputString+ _endLine+ "String_Node_Str"+ inputString+ _endLine+ "String_Node_Str"+ initString+ _endLine+ "String_Node_Str"+ modeString+ _endLine+ "String_Node_Str"+ _endLine;
  if (FSMDirector.class.isInstance(actor.getDirector())) {
    _modeCode+="String_Node_Str" + actor.getName() + "String_Node_Str"+ "String_Node_Str"+ typedModeParameterString+ "String_Node_Str"+ _endLine+ "String_Node_Str"+ _endLine+ "String_Node_Str"+ outputString+ _endLine+ "String_Node_Str"+ inputString+ _endLine;
    String subModeString=_fsmModeCode(((FSMDirector)actor.getDirector()).getController(),inputString,outputString);
    _modeCode+="String_Node_Str" + invariantString + _endLine+ "String_Node_Str"+ _endLine+ subModeString;
  }
 else {
    flowString=_graphToText(actor);
    _modeCode+="String_Node_Str" + actor.getName() + "String_Node_Str"+ "String_Node_Str"+ typedModeParameterString+ "String_Node_Str"+ _endLine+ "String_Node_Str"+ _endLine+ "String_Node_Str"+ outputString+ _endLine+ "String_Node_Str"+ inputString+ _endLine+ "String_Node_Str"+ flowString+ _endLine+ "String_Node_Str"+ invariantString+ _endLine+ "String_Node_Str"+ _endLine;
  }
  return codeString;
}