Program: 74130
Project: 74130
Buggy source:
/** 
 * Process this event with the given arguments. The number of arguments provided must be equal to the number of formal parameters defined for this event, and their types must match. The actions of this event are executed.
 * @param arguments The arguments used to process this event, which must beeither an ArrayToken or a RecordToken.
 * @return A refiring data structure that contains a non-negative doublenumber if refire() should be called after that amount of model time, or null if refire() need not be called.
 * @exception IllegalActionException If the number of the arguments ortheir types do not match, the actions cannot be executed, or any expression (such as guards and arguments to the next events) cannot be evaluated.
 * @see #refire(Token,RefiringData)
 */
public RefiringData fire(Token arguments) throws IllegalActionException {
  _debug(new PteraDebugEvent(this,"String_Node_Str"));
  List<String> names=parameters.getParameterNames();
  Type[] types=parameters.getParameterTypes();
  if (arguments instanceof ArrayToken) {
    ArrayToken array=(ArrayToken)arguments;
    int i=0;
    for (    String name : names) {
      Variable variable=(Variable)getAttribute(name);
      if (i < array.length()) {
        Token token=array.getElement(i);
        variable.setToken(types[i].convert(token));
      }
 else {
        variable.setToken(NullToken.NIL);
      }
      i++;
    }
  }
 else   if (arguments instanceof RecordToken) {
    RecordToken record=(RecordToken)arguments;
    int i=0;
    for (    String name : names) {
      Variable variable=(Variable)getAttribute(name);
      Token token=record.get(name);
      if (token == null) {
        variable.setToken(NullToken.NIL);
      }
 else {
        variable.setToken(types[i].convert(token));
      }
      i++;
    }
  }
 else   if (arguments != null) {
    throw new IllegalActionException(this,"String_Node_Str" + "String_Node_Str" + arguments.getType() + "String_Node_Str");
  }
  actions.execute();
  return null;
}

Fixed version (ground truth):
/** 
 * Process this event with the given arguments. The number of arguments provided must be equal to the number of formal parameters defined for this event, and their types must match. The actions of this event are executed.
 * @param arguments The arguments used to process this event, which must beeither an ArrayToken or a RecordToken.
 * @return A refiring data structure that contains a non-negative doublenumber if refire() should be called after that amount of model time, or null if refire() need not be called.
 * @exception IllegalActionException If the number of the arguments ortheir types do not match, the actions cannot be executed, or any expression (such as guards and arguments to the next events) cannot be evaluated.
 * @see #refire(Token,RefiringData)
 */
public RefiringData fire(Token arguments) throws IllegalActionException {
  List<String> names=parameters.getParameterNames();
  Type[] types=parameters.getParameterTypes();
  Token[] tokens=new Token[names.size()];
  if (arguments instanceof ArrayToken) {
    ArrayToken array=(ArrayToken)arguments;
    int i=0;
    for (    String name : names) {
      Variable variable=(Variable)getAttribute(name);
      if (i < array.length()) {
        tokens[i]=types[i].convert(array.getElement(i));
      }
 else {
        tokens[i]=NullToken.NIL;
      }
      variable.setToken(tokens[i]);
      i++;
    }
  }
 else   if (arguments instanceof RecordToken) {
    RecordToken record=(RecordToken)arguments;
    int i=0;
    for (    String name : names) {
      Variable variable=(Variable)getAttribute(name);
      tokens[i]=record.get(name);
      if (tokens[i] == null) {
        tokens[i]=NullToken.NIL;
      }
 else {
        tokens[i]=types[i].convert(tokens[i]);
      }
      variable.setToken(tokens[i]);
      i++;
    }
  }
 else   if (arguments != null) {
    throw new IllegalActionException(this,"String_Node_Str" + "String_Node_Str" + arguments.getType() + "String_Node_Str");
  }
  StringBuffer buffer=new StringBuffer("String_Node_Str");
  if (names.size() == 0) {
    buffer.append("String_Node_Str");
  }
 else {
    int i=0;
    buffer.append("String_Node_Str");
    for (    String name : names) {
      buffer.append(name);
      buffer.append("String_Node_Str");
      buffer.append(tokens[i]);
      i++;
      if (i < names.size()) {
        buffer.append("String_Node_Str");
      }
    }
    buffer.append("String_Node_Str");
  }
  _debug(new PteraDebugEvent(this,buffer.toString()));
  actions.execute();
  return null;
}