Program: 75162
Project: 75162
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 parseTrees=_parseTrees.iterator();
    while (destinations.hasNext()) {
      NamedObj nextDestination=(NamedObj)destinations.next();
      if (!(nextDestination instanceof IOPort)) {
        throw new IllegalActionException(this,"String_Node_Str" + nextDestination.getFullName());
      }
      IOPort destination=(IOPort)nextDestination;
      boolean isInput=destination.isInput();
      Integer channel=(Integer)channels.next();
      ASTPtRootNode parseTree=(ASTPtRootNode)parseTrees.next();
      Token token;
      try {
        token=_parseTreeEvaluator.evaluateParseTree(parseTree,_scope);
      }
 catch (      IllegalActionException ex) {
        throw new IllegalActionException(this,ex,"String_Node_Str");
      }
      try {
        if (token != null) {
          Receiver[][] localReceivers=destination.getReceivers();
          if (channel != null) {
            destination.send(channel.intValue(),token);
            if (_debugging) {
              _debug(getFullName() + "String_Node_Str" + destination.getName()+ "String_Node_Str"+ channel.intValue()+ "String_Node_Str"+ token);
            }
          }
 else {
            destination.broadcast(token);
            if (_debugging) {
              _debug(getFullName() + "String_Node_Str" + destination.getName()+ "String_Node_Str"+ token);
            }
          }
        }
      }
 catch (      NoRoomException ex) {
        throw new IllegalActionException(this,"String_Node_Str" + ex.getMessage());
      }
catch (      UnknownResultException ex) {
      }
    }
  }
}

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 parseTrees=_parseTrees.iterator();
    while (destinations.hasNext()) {
      NamedObj nextDestination=(NamedObj)destinations.next();
      if (!(nextDestination instanceof IOPort)) {
        throw new IllegalActionException(this,"String_Node_Str" + nextDestination.getFullName());
      }
      IOPort destination=(IOPort)nextDestination;
      boolean isInput=destination.isInput();
      Integer channel=(Integer)channels.next();
      ASTPtRootNode parseTree=(ASTPtRootNode)parseTrees.next();
      Token token;
      try {
        token=_parseTreeEvaluator.evaluateParseTree(parseTree,_scope);
      }
 catch (      IllegalActionException ex) {
        throw new IllegalActionException(this,ex,"String_Node_Str");
      }
      try {
        if (token != null) {
          Receiver[][] localReceivers=destination.getReceivers();
          if (channel != null) {
            int chanelValue=channel.intValue();
            destination.send(chanelValue,token);
            if (isInput) {
              localReceivers[chanelValue][0].put(token);
            }
            if (_debugging) {
              _debug(getFullName() + "String_Node_Str" + destination.getName()+ "String_Node_Str"+ chanelValue+ "String_Node_Str"+ token);
            }
          }
 else {
            destination.broadcast(token);
            if (isInput) {
              for (int i=0; i < localReceivers.length; i++) {
                localReceivers[i][0].put(token);
              }
            }
            if (_debugging) {
              _debug(getFullName() + "String_Node_Str" + destination.getName()+ "String_Node_Str"+ token);
            }
          }
        }
      }
 catch (      NoRoomException ex) {
        throw new IllegalActionException(this,"String_Node_Str" + ex.getMessage());
      }
catch (      UnknownResultException ex) {
      }
    }
  }
}