Program: 74024
Project: 74024
Buggy source:
/** 
 * @param entity
 * @param userCode
 * @exception IllegalActionException
 */
private void _compileUserCode(Entity entity,String userCode) throws IllegalActionException {
  String ptRoot=StringUtilities.getProperty("String_Node_Str");
  String classname=_getPackageName() + entity.getClass().getName().replaceFirst("String_Node_Str","String_Node_Str");
  String packageName=_getPackageName() + entity.getClass().getPackage().getName().replaceFirst("String_Node_Str","String_Node_Str");
  String directoryPath=(ptRoot + "String_Node_Str" + packageName).replace("String_Node_Str","String_Node_Str");
  try {
    File file;
    File directory=FileUtilities.nameToFile(directoryPath,null);
    directory.mkdirs();
    file=new File(directory,entity.getClass().getSimpleName() + "String_Node_Str");
    String filename=file.getCanonicalPath();
    PrintWriter out=new PrintWriter(new FileOutputStream(file));
    out.println(userCode);
    out.flush();
    out.close();
    if (_executeCommands == null) {
      _executeCommands=new StringBufferExec(true);
    }
    List commands=new LinkedList();
    commands.add("String_Node_Str" + filename + "String_Node_Str");
    _executeCommands.setWorkingDirectory(new File(ptRoot));
    _executeCommands.setCommands(commands);
    _executeCommands.start();
    int status=_executeCommands.getLastSubprocessReturnCode();
switch (status) {
case 0:
      try {
        Class.forName(classname);
      }
 catch (      Exception ex) {
        throw new IllegalActionException(null,ex,"String_Node_Str" + classname);
      }
    break;
default :
  throw new IllegalActionException("String_Node_Str" + entity.getName());
}
}
 catch (IOException ex) {
throw new IllegalActionException(null,ex,"String_Node_Str" + entity.getName());
}
}

Fixed version (ground truth):
/** 
 * @param entity
 * @param userCode
 * @exception IllegalActionException
 */
private void _compileUserCode(Entity entity,String userCode) throws IllegalActionException {
  String ptRoot=StringUtilities.getProperty("String_Node_Str");
  String classname=_getPackageName() + entity.getClass().getName().replaceFirst("String_Node_Str","String_Node_Str");
  String packageName=_getPackageName() + entity.getClass().getPackage().getName().replaceFirst("String_Node_Str","String_Node_Str");
  String directoryPath=(ptRoot + "String_Node_Str" + packageName).replace("String_Node_Str","String_Node_Str");
  try {
    File file;
    File directory=FileUtilities.nameToFile(directoryPath,null);
    if (!directory.mkdirs()) {
      throw new IllegalActionException(this,"String_Node_Str" + directory.getAbsolutePath() + "String_Node_Str");
    }
    file=new File(directory,entity.getClass().getSimpleName() + "String_Node_Str");
    String filename=file.getCanonicalPath();
    PrintWriter out=new PrintWriter(new FileOutputStream(file));
    out.println(userCode);
    out.flush();
    out.close();
    if (_executeCommands == null) {
      _executeCommands=new StringBufferExec(true);
    }
    List commands=new LinkedList();
    commands.add("String_Node_Str" + filename + "String_Node_Str");
    _executeCommands.setWorkingDirectory(new File(ptRoot));
    _executeCommands.setCommands(commands);
    _executeCommands.start();
    int status=_executeCommands.getLastSubprocessReturnCode();
switch (status) {
case 0:
      try {
        Class.forName(classname);
      }
 catch (      Exception ex) {
        throw new IllegalActionException(null,ex,"String_Node_Str" + classname);
      }
    break;
default :
  throw new IllegalActionException("String_Node_Str" + entity.getName());
}
}
 catch (IOException ex) {
throw new IllegalActionException(null,ex,"String_Node_Str" + entity.getName());
}
}