Program: 75836
Project: 75836
Buggy source:
/** 
 * Calculate the current schedule, if necessary, and iterate the  contained actors in the order given by the schedule. This  method differes from the fire() method of SDFDirector in that  this method uses cached schedules when possible. This leads to  more efficient execution. The cache size to use is set by the scheduleCacheSize parameter.   <p> Iterating an actor involves calling the actor's iterate() method, which is equivalent to calling the actor's  prefire(), fire() and postfire() methods in succession.  If iterate() returns NOT_READY, indicating that the actor is not ready to execute, then an IllegalActionException will be thrown. The values returned from iterate() are recorded and are used to determine the value that postfire() will return at the end of the director's iteration.
 * @exception IllegalActionException If any actor executed by thisactor return false in prefire.
 * @exception InvalidStateException If this director does not have acontainer.
 */
public void fire() throws IllegalActionException {
  TypedCompositeActor container=((TypedCompositeActor)getContainer());
  if (container == null) {
    throw new InvalidStateException("String_Node_Str" + getName() + "String_Node_Str");
  }
 else {
    Schedule sched=getSchedule();
    Iterator firings=sched.firingIterator();
    while (firings.hasNext()) {
      Firing firing=(Firing)firings.next();
      Actor actor=(Actor)firing.getActor();
      int iterationCount=firing.getIterationCount();
      if (_debugging) {
        _debug(new FiringEvent(this,actor,FiringEvent.ITERATE));
      }
      int factor=((IntToken)(vectorizationFactor.getToken())).intValue();
      if (factor < 1) {
        throw new IllegalActionException(this,"String_Node_Str" + "String_Node_Str" + "String_Node_Str"+ factor);
      }
      int returnVal=actor.iterate(factor * iterationCount);
      if (returnVal == COMPLETED) {
        _postfirereturns=_postfirereturns && true;
      }
 else       if (returnVal == NOT_READY) {
        throw new IllegalActionException(this,(ComponentEntity)actor,"String_Node_Str" + "String_Node_Str");
      }
 else       if (returnVal == STOP_ITERATING) {
        _postfirereturns=false;
      }
    }
  }
}

Fixed version (ground truth):
/** 
 * Calculate the current schedule, if necessary, and iterate the  contained actors in the order given by the schedule. This  method differes from the fire() method of SDFDirector in that  this method uses cached schedules when possible. This leads to  more efficient execution. The cache size to use is set by the scheduleCacheSize parameter.   <p> Iterating an actor involves calling the actor's iterate() method, which is equivalent to calling the actor's  prefire(), fire() and postfire() methods in succession.  If iterate() returns NOT_READY, indicating that the actor is not ready to execute, then an IllegalActionException will be thrown. The values returned from iterate() are recorded and are used to determine the value that postfire() will return at the end of the director's iteration.
 * @exception IllegalActionException If any actor executed by thisactor return false in prefire.
 * @exception InvalidStateException If this director does not have acontainer.
 */
public void fire() throws IllegalActionException {
  if (_debug_info) {
    System.out.println(getName() + "String_Node_Str");
  }
  TypedCompositeActor container=((TypedCompositeActor)getContainer());
  if (container == null) {
    throw new InvalidStateException("String_Node_Str" + getName() + "String_Node_Str");
  }
 else {
    if (_debug_info) {
      System.out.println(getName() + "String_Node_Str" + "String_Node_Str");
      Schedule tSched=getSchedule();
      Iterator tFirings=tSched.firingIterator();
      while (tFirings.hasNext()) {
        Firing firing=(Firing)tFirings.next();
        Actor actor=(Actor)firing.getActor();
        System.out.println("String_Node_Str" + ((NamedObj)actor).getName() + "String_Node_Str");
      }
    }
    Schedule sched=getSchedule();
    Iterator firings=sched.firingIterator();
    while (firings.hasNext()) {
      Firing firing=(Firing)firings.next();
      Actor actor=(Actor)firing.getActor();
      if (_debug_info) {
        System.out.println(getName() + "String_Node_Str" + "String_Node_Str"+ ((NamedObj)actor).getName());
      }
      int iterationCount=firing.getIterationCount();
      if (_debugging) {
        _debug(new FiringEvent(this,actor,FiringEvent.ITERATE));
      }
      int factor=((IntToken)(vectorizationFactor.getToken())).intValue();
      if (factor < 1) {
        throw new IllegalActionException(this,"String_Node_Str" + "String_Node_Str" + "String_Node_Str"+ factor);
      }
      int returnVal=actor.iterate(factor * iterationCount);
      if (returnVal == COMPLETED) {
        _postfirereturns=_postfirereturns && true;
      }
 else       if (returnVal == NOT_READY) {
        throw new IllegalActionException(this,(ComponentEntity)actor,"String_Node_Str" + "String_Node_Str");
      }
 else       if (returnVal == STOP_ITERATING) {
        _postfirereturns=false;
      }
    }
  }
}