Program: 75244
Project: 75244
Buggy source:
/** 
 * Process discrete event actors in the system.  The execution repeats executing the discrete actors,  wavefore generators, and event generators until the execution  reachs a fix point, where no more events happen at the current time. 
 * @exception IllegalActionException If one of the actors throws it.
 */
private void _discretePhaseExecution() throws IllegalActionException {
  if (_debugging)   _debug("String_Node_Str" + getName(),"String_Node_Str" + getModelTime());
  _setDiscretePhase(true);
  setCurrentStepSize(getSuggestedNextStepSize());
  boolean discreteFixPointReached=false;
  CTSchedule schedule=(CTSchedule)getScheduler().getSchedule();
  if (!hasCurrentEvent()) {
    if (_debugging) {
      _debug("String_Node_Str" + "String_Node_Str");
    }
    discreteFixPointReached=true;
    _setDiscretePhase(false);
    return;
  }
  while ((!discreteFixPointReached || hasCurrentEvent()) && _postfireReturns) {
    _processBreakpoints();
    if (_debugging) {
      _debug("String_Node_Str");
    }
    if (_debugging)     _debug("String_Node_Str" + getName(),"String_Node_Str");
    _iterateDiscreteActors(schedule);
    if (_debugging)     _debug("String_Node_Str" + getName(),"String_Node_Str");
    _iterateWaveformGenerators(schedule);
    if (_debugging)     _debug("String_Node_Str" + getName(),"String_Node_Str");
    _createIterationStartingStates();
    if (_debugging)     _debug("String_Node_Str" + getName(),"String_Node_Str");
    _iterateEventGenerators(schedule);
    discreteFixPointReached=!_processBreakpoints();
    if (discreteFixPointReached && _debugging) {
      _debug("String_Node_Str" + getBreakPoints().first() + "String_Node_Str");
      _debug("String_Node_Str" + "String_Node_Str");
    }
  }
  _setDiscretePhase(false);
}

Fixed version (ground truth):
/** 
 * Process discrete event actors in the system.  The execution repeats executing the discrete actors,  wavefore generators, and event generators until the execution  reachs a fix point, where no more events happen at the current time. 
 * @exception IllegalActionException If one of the actors throws it.
 */
private void _discretePhaseExecution() throws IllegalActionException {
  if (_debugging)   _debug("String_Node_Str" + getName(),"String_Node_Str" + getModelTime());
  _setDiscretePhase(true);
  setCurrentStepSize(getSuggestedNextStepSize());
  boolean discreteFixPointReached=false;
  CTSchedule schedule=(CTSchedule)getScheduler().getSchedule();
  while (hasCurrentEvent() && _postfireReturns) {
    if (_debugging) {
      _debug("String_Node_Str");
    }
    if (_debugging)     _debug("String_Node_Str" + getName(),"String_Node_Str");
    _iteratePurelyDiscreteActors(schedule);
    if (_debugging)     _debug("String_Node_Str" + getName(),"String_Node_Str");
    _iterateWaveformGenerators(schedule);
    if (_debugging)     _debug("String_Node_Str" + getName(),"String_Node_Str");
    _createIterationStartingStates();
    if (_debugging)     _debug("String_Node_Str" + getName(),"String_Node_Str");
    _iterateEventGenerators(schedule);
  }
  if (_debugging) {
    _debug("String_Node_Str" + getBreakPoints().first() + "String_Node_Str");
    _debug("String_Node_Str" + "String_Node_Str");
  }
  discreteFixPointReached=true;
  _setDiscretePhase(false);
}