Program: 75587
Project: 75587
Buggy source:
/** 
 * Read the argument of the function from the ports, call the native method throw the generated interface, and put the results on the corresponding ports
 * @exception IllegalActionException If a exception occured
 */
public void fire() throws IllegalActionException {
  Iterator ports=this.portList().iterator();
  Vector args=new Vector();
  while (ports.hasNext()) {
    Object object=ports.next();
    TypedIOPort port=(TypedIOPort)ports.next();
    if (port.isInput() && port.hasToken(0) && !(port.isOutput() && !port.isInput())) {
      Token tok=(Token)port.get(0);
      String typ=(String)_methods[_methodIndex].getParameterTypes()[args.size()].toString();
      if (typ.equals("String_Node_Str")) {
        args.add(new Boolean((boolean)((BooleanToken)tok).booleanValue()));
      }
 else       if (typ.equals("String_Node_Str")) {
        args.add(new Integer((int)((IntToken)tok).intValue()));
      }
 else       if (typ.equals("String_Node_Str")) {
        args.add(new Double((double)((DoubleToken)tok).doubleValue()));
      }
 else       if (typ.equals("String_Node_Str")) {
        int siz=((ArrayToken)tok).arrayValue().length;
        int[] tab=new int[siz];
        for (int j=0; j < siz; j++)         tab[j]=(int)((IntToken)(((ArrayToken)tok).arrayValue()[j])).intValue();
        args.add((Object)tab);
      }
 else {
        System.out.println("String_Node_Str" + "String_Node_Str");
      }
    }
  }
  Object obj=null;
  Object ret=null;
  try {
    try {
      obj=_class.newInstance();
    }
 catch (    Error error) {
      String libraryPath=StringUtilities.getProperty("String_Node_Str");
      throw new Exception("String_Node_Str" + _class + "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ libraryPath+ "String_Node_Str"+ error.getMessage(),error);
    }
  }
 catch (  Exception ex) {
    throw new IllegalActionException(this,ex,"String_Node_Str");
  }
  try {
    ret=_methods[_methodIndex].invoke(obj,args.toArray());
  }
 catch (  Throwable ex) {
    StringBuffer argumentsDescription=new StringBuffer("String_Node_Str");
    try {
      if (args.size() >= 1) {
        argumentsDescription.append(args.elementAt(0).toString());
        for (int i=1; i < args.size(); i++) {
          argumentsDescription.append("String_Node_Str" + args.elementAt(i).toString());
        }
      }
    }
 catch (    Exception ex2) {
    }
    throw new IllegalActionException(this,ex,"String_Node_Str" + "String_Node_Str" + obj + "String_Node_Str"+ args.size()+ "String_Node_Str"+ argumentsDescription.toString());
  }
  Iterator arguments=argumentsList().iterator();
  while (arguments.hasNext()) {
    TypedIOPort port=(TypedIOPort)arguments.next();
    if (port.getName().equals(this.getArgumentReturn().getName())) {
      String typ="String_Node_Str";
      Field field=null;
      try {
        field=_class.getDeclaredField("String_Node_Str" + port.getName());
        typ=(String)field.getType().toString();
      }
 catch (      NoSuchFieldException e) {
        try {
          MessageHandler.warning("String_Node_Str");
        }
 catch (        Exception ex2) {
          getDirector().stop();
        }
      }
      if (typ.equals("String_Node_Str")) {
        port.send(0,(Token)new BooleanToken(((Boolean)ret).booleanValue()));
      }
 else       if (typ.equals("String_Node_Str")) {
        port.send(0,(Token)new DoubleToken(((Double)ret).doubleValue()));
      }
 else       if (typ.equals("String_Node_Str")) {
        port.send(0,(Token)new IntToken(((Integer)ret).intValue()));
      }
 else       if (typ.equals("String_Node_Str")) {
        port.send(0,(Token)new UnsignedByteToken(((Byte)ret).byteValue()));
      }
 else {
        System.out.println("String_Node_Str" + "String_Node_Str");
      }
    }
 else     if (port.isOutput() && !(port.getName().equals(this.getArgumentReturn().getName()))) {
      String typ="String_Node_Str";
      Field field=null;
      try {
        field=_class.getDeclaredField("String_Node_Str" + port.getName());
        typ=(String)field.getType().toString();
      }
 catch (      NoSuchFieldException ex) {
        try {
          field=_class.getDeclaredField("String_Node_Str" + port.getName().substring(0,port.getName().length() - 3));
          typ=(String)field.getType().toString();
        }
 catch (        Exception e) {
          try {
            MessageHandler.warning("String_Node_Str" + port.getName() + "String_Node_Str");
          }
 catch (          Exception ex2) {
            getDirector().stop();
          }
        }
      }
      if (typ.equals("String_Node_Str")) {
        try {
          port.send(0,(Token)new BooleanToken(field.getBoolean(obj)));
        }
 catch (        IllegalAccessException ex) {
          MessageHandler.error("String_Node_Str",ex);
        }
      }
 else       if (typ.equals("String_Node_Str")) {
        try {
          port.send(0,(Token)new DoubleToken(field.getDouble(obj)));
        }
 catch (        IllegalAccessException ex) {
          MessageHandler.error("String_Node_Str",ex);
        }
      }
 else       if (typ.equals("String_Node_Str")) {
        try {
          port.send(0,(Token)new IntToken(field.getInt(obj)));
        }
 catch (        IllegalAccessException ex) {
          MessageHandler.error("String_Node_Str",ex);
        }
      }
 else       if (typ.equals("String_Node_Str")) {
        try {
          port.send(0,(Token)new UnsignedByteToken((char)field.getChar(obj)));
        }
 catch (        IllegalAccessException ex) {
          MessageHandler.error("String_Node_Str",ex);
        }
      }
 else       if (typ.equals("String_Node_Str")) {
        try {
          int[] tab=(int[])field.get(obj);
          Token[] toks=new Token[((int[])field.get(obj)).length];
          for (int j=0; j < ((int[])field.get(obj)).length; j++)           toks[j]=new IntToken(((int[])field.get(obj))[j]);
          port.send(0,new ArrayToken(toks));
        }
 catch (        IllegalAccessException ex) {
          MessageHandler.error("String_Node_Str",ex);
        }
      }
 else {
        System.out.println("String_Node_Str" + "String_Node_Str");
      }
    }
  }
}

Fixed version (ground truth):
/** 
 * Read the argument of the function from the ports, call the native method throw the generated interface, and put the results on the corresponding ports
 * @exception IllegalActionException If a exception occured
 */
public void fire() throws IllegalActionException {
  Iterator ports=this.portList().iterator();
  Vector args=new Vector();
  while (ports.hasNext()) {
    TypedIOPort port=(TypedIOPort)ports.next();
    if (port.isInput() && port.hasToken(0) && !(port.isOutput() && !port.isInput())) {
      Token tok=(Token)port.get(0);
      String typ=(String)_methods[_methodIndex].getParameterTypes()[args.size()].toString();
      if (typ.equals("String_Node_Str")) {
        args.add(new Boolean((boolean)((BooleanToken)tok).booleanValue()));
      }
 else       if (typ.equals("String_Node_Str")) {
        args.add(new Integer((int)((IntToken)tok).intValue()));
      }
 else       if (typ.equals("String_Node_Str")) {
        args.add(new Double((double)((DoubleToken)tok).doubleValue()));
      }
 else       if (typ.equals("String_Node_Str")) {
        int siz=((ArrayToken)tok).arrayValue().length;
        int[] tab=new int[siz];
        for (int j=0; j < siz; j++)         tab[j]=(int)((IntToken)(((ArrayToken)tok).arrayValue()[j])).intValue();
        args.add((Object)tab);
      }
 else {
        System.out.println("String_Node_Str" + "String_Node_Str");
      }
    }
  }
  Object obj=null;
  Object ret=null;
  try {
    try {
      obj=_class.newInstance();
    }
 catch (    Error error) {
      String libraryPath=StringUtilities.getProperty("String_Node_Str");
      throw new Exception("String_Node_Str" + _class + "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ libraryPath+ "String_Node_Str"+ error.getMessage(),error);
    }
  }
 catch (  Exception ex) {
    throw new IllegalActionException(this,ex,"String_Node_Str");
  }
  try {
    ret=_methods[_methodIndex].invoke(obj,args.toArray());
  }
 catch (  Throwable ex) {
    StringBuffer argumentsDescription=new StringBuffer("String_Node_Str");
    try {
      if (args.size() >= 1) {
        argumentsDescription.append(args.elementAt(0).toString());
        for (int i=1; i < args.size(); i++) {
          argumentsDescription.append("String_Node_Str" + args.elementAt(i).toString());
        }
      }
    }
 catch (    Exception ex2) {
    }
    throw new IllegalActionException(this,ex,"String_Node_Str" + "String_Node_Str" + obj + "String_Node_Str"+ args.size()+ "String_Node_Str"+ argumentsDescription.toString());
  }
  ports=portList().iterator();
  while (ports.hasNext()) {
    TypedIOPort port=(TypedIOPort)ports.next();
    if (port.getName().equals(this.getArgumentReturn().getName())) {
      String typ="String_Node_Str";
      Field field=null;
      try {
        field=_class.getDeclaredField("String_Node_Str" + port.getName());
        typ=(String)field.getType().toString();
      }
 catch (      NoSuchFieldException e) {
        try {
          MessageHandler.warning("String_Node_Str");
        }
 catch (        Exception ex2) {
          getDirector().stop();
        }
      }
      if (typ.equals("String_Node_Str")) {
        port.send(0,(Token)new BooleanToken(((Boolean)ret).booleanValue()));
      }
 else       if (typ.equals("String_Node_Str")) {
        port.send(0,(Token)new DoubleToken(((Double)ret).doubleValue()));
      }
 else       if (typ.equals("String_Node_Str")) {
        port.send(0,(Token)new IntToken(((Integer)ret).intValue()));
      }
 else       if (typ.equals("String_Node_Str")) {
        port.send(0,(Token)new UnsignedByteToken(((Byte)ret).byteValue()));
      }
 else {
        System.out.println("String_Node_Str" + "String_Node_Str");
      }
    }
 else     if (port.isOutput() && !(port.getName().equals(this.getArgumentReturn().getName()))) {
      String typ="String_Node_Str";
      Field field=null;
      try {
        field=_class.getDeclaredField("String_Node_Str" + port.getName());
        typ=(String)field.getType().toString();
      }
 catch (      NoSuchFieldException ex) {
        try {
          field=_class.getDeclaredField("String_Node_Str" + port.getName().substring(0,port.getName().length() - 3));
          typ=(String)field.getType().toString();
        }
 catch (        Exception e) {
          try {
            MessageHandler.warning("String_Node_Str" + port.getName() + "String_Node_Str");
          }
 catch (          Exception ex2) {
            getDirector().stop();
          }
        }
      }
      if (typ.equals("String_Node_Str")) {
        try {
          port.send(0,(Token)new BooleanToken(field.getBoolean(obj)));
        }
 catch (        IllegalAccessException ex) {
          MessageHandler.error("String_Node_Str",ex);
        }
      }
 else       if (typ.equals("String_Node_Str")) {
        try {
          port.send(0,(Token)new DoubleToken(field.getDouble(obj)));
        }
 catch (        IllegalAccessException ex) {
          MessageHandler.error("String_Node_Str",ex);
        }
      }
 else       if (typ.equals("String_Node_Str")) {
        try {
          port.send(0,(Token)new IntToken(field.getInt(obj)));
        }
 catch (        IllegalAccessException ex) {
          MessageHandler.error("String_Node_Str",ex);
        }
      }
 else       if (typ.equals("String_Node_Str")) {
        try {
          port.send(0,(Token)new UnsignedByteToken((char)field.getChar(obj)));
        }
 catch (        IllegalAccessException ex) {
          MessageHandler.error("String_Node_Str",ex);
        }
      }
 else       if (typ.equals("String_Node_Str")) {
        try {
          int[] tab=(int[])field.get(obj);
          Token[] toks=new Token[((int[])field.get(obj)).length];
          for (int j=0; j < ((int[])field.get(obj)).length; j++)           toks[j]=new IntToken(((int[])field.get(obj))[j]);
          port.send(0,new ArrayToken(toks));
        }
 catch (        IllegalAccessException ex) {
          MessageHandler.error("String_Node_Str",ex);
        }
      }
 else {
        System.out.println("String_Node_Str" + "String_Node_Str");
      }
    }
  }
}