Program: 75754
Project: 75754
Buggy source:
/** 
 * Send tokens to the designated outputs.  Each token is determined by evaluating the expression portion of the action.
 * @exception IllegalActionException If expression evaluation fails,or the specified port is not found, or sending to one of the channels of the port throws a NoRoomException.
 */
public void execute() throws IllegalActionException {
  super.execute();
  if (_destinations != null) {
    Iterator destinations=_destinations.iterator();
    Iterator channels=_numbers.iterator();
    Iterator variables=_variables.iterator();
    while (destinations.hasNext()) {
      Variable variable=(Variable)variables.next();
      NamedObj nextDestination=(NamedObj)destinations.next();
      Integer channel=(Integer)channels.next();
      if (nextDestination instanceof IOPort) {
        IOPort destination=(IOPort)nextDestination;
        try {
          Token tok=variable.getToken();
          if (channel != null) {
            if (tok == null) {
              destination.sendAbsent(channel.intValue());
            }
 else {
              destination.send(channel.intValue(),tok);
            }
          }
 else {
            if (tok == null) {
              destination.broadcastAbsent();
            }
 else {
              destination.broadcast(tok);
            }
          }
        }
 catch (        NoRoomException ex) {
          throw new IllegalActionException(this,"String_Node_Str" + ex.getMessage());
        }
catch (        UnknownResultException ex) {
        }
      }
 else       if (nextDestination instanceof Variable) {
        Variable destination=(Variable)nextDestination;
        try {
          destination.setToken(variable.getToken());
          destination.validate();
        }
 catch (        UnknownResultException ex) {
          destination.setUnknown(true);
        }
      }
 else {
        throw new IllegalActionException(this,"String_Node_Str" + nextDestination.getFullName());
      }
    }
  }
}

Fixed version (ground truth):
/** 
 * Send tokens to the designated outputs.  Each token is determined by evaluating the expression portion of the action.
 * @exception IllegalActionException If expression evaluation fails,or the specified port is not found, or sending to one of the channels of the port throws a NoRoomException.
 */
public void execute() throws IllegalActionException {
  super.execute();
  if (_destinations != null) {
    Iterator destinations=_destinations.iterator();
    Iterator channels=_numbers.iterator();
    Iterator variables=_variables.iterator();
    while (destinations.hasNext()) {
      Variable variable=(Variable)variables.next();
      NamedObj nextDestination=(NamedObj)destinations.next();
      Integer channel=(Integer)channels.next();
      if (nextDestination instanceof IOPort) {
        IOPort destination=(IOPort)nextDestination;
        try {
          Token token=variable.getToken();
          if (channel != null) {
            if (token == null) {
              destination.sendAbsent(channel.intValue());
            }
 else {
              destination.send(channel.intValue(),token);
            }
          }
 else {
            if (token == null) {
              destination.broadcastAbsent();
            }
 else {
              destination.broadcast(token);
            }
          }
        }
 catch (        NoRoomException ex) {
          throw new IllegalActionException(this,"String_Node_Str" + ex.getMessage());
        }
catch (        UnknownResultException ex) {
        }
      }
 else       if (nextDestination instanceof Variable) {
        Variable destination=(Variable)nextDestination;
        try {
          destination.setToken(variable.getToken());
          destination.validate();
        }
 catch (        UnknownResultException ex) {
          destination.setUnknown(true);
        }
      }
 else {
        throw new IllegalActionException(this,"String_Node_Str" + nextDestination.getFullName());
      }
    }
  }
}