Program: 72691
Project: 72691
Buggy source:
/** 
 * Create receivers and invoke the preinitialize() method of the local director. If this actor is not opaque, throw an exception.  This method also resets the protected variable _stopRequested to false, so if a derived class overrides this method, then it should also do that.  This method is read-synchronized on the workspace, so the preinitialize() method of the director need not be, assuming it is only called from here.
 * @exception IllegalActionException If there is no director, orif the director's preinitialize() method throws it, or if this actor is not opaque.
 */
public void initialize() throws IllegalActionException {
  super.initialize();
  try {
    _generatingCode=true;
    if (_modelChanged()) {
      super.preinitialize();
      executeChangeRequests();
      _generateCode();
    }
    String className=CodeGeneratorAdapter.generateName(this);
    URL url=_codeGenerator.codeDirectory.asFile().toURI().toURL();
    if (((BooleanToken)_codeGenerator.generateInSubdirectory.getToken()).booleanValue()) {
      className=className + "String_Node_Str" + className;
      url=_codeGenerator.codeDirectory.asFile().getParentFile().toURI().toURL();
    }
    if (!url.getPath().endsWith("String_Node_Str")) {
      url=new URL(url.toString() + "String_Node_Str");
    }
    URL[] urls=new URL[]{url};
    URLClassLoader classLoader=null;
    Class<?> classInstance=null;
    try {
      classLoader=new URLClassLoader(urls);
      classInstance=classLoader.loadClass(className);
    }
 catch (    ClassNotFoundException ex) {
      _generateCode();
      try {
        classInstance=classLoader.loadClass(className);
      }
 catch (      ClassNotFoundException ex2) {
        ex2.printStackTrace();
        throw new ClassNotFoundException("String_Node_Str" + className + "String_Node_Str"+ url+ "String_Node_Str"+ java.util.Arrays.deepToString(classLoader.getURLs())+ "String_Node_Str"+ ex2);
      }
    }
 finally {
      if (classLoader != null) {
        try {
          classLoader.close();
        }
 catch (        IOException ex) {
          throw new IllegalActionException(this,ex,"String_Node_Str" + (url == null ? "String_Node_Str" : url) + "String_Node_Str");
        }
      }
    }
    _objectWrapper=classInstance.newInstance();
    Method[] methods=classInstance.getMethods();
    Method initializeMethod=null;
    for (    Method method : methods) {
      String name=method.getName();
      if (name.equals("String_Node_Str")) {
        _fireMethod=method;
      }
      if (name.equals("String_Node_Str")) {
        initializeMethod=method;
      }
    }
    if (_fireMethod == null) {
      throw new IllegalActionException(this,"String_Node_Str" + "String_Node_Str");
    }
    if (initializeMethod == null) {
      throw new IllegalActionException(this,"String_Node_Str" + "String_Node_Str");
    }
    initializeMethod.invoke(_objectWrapper,(Object[])null);
    if (_debugging) {
      _debug("String_Node_Str");
    }
    recompileThisLevel.setToken(new BooleanToken(false));
    recompileHierarchy.setToken(new BooleanToken(false));
    _compiled=true;
  }
 catch (  Throwable throwable) {
    _objectWrapper=null;
    _fireMethod=null;
    throw new IllegalActionException(this,throwable,"String_Node_Str");
  }
 finally {
    _generatingCode=false;
  }
}

Fixed version (ground truth):
/** 
 * Create receivers and invoke the preinitialize() method of the local director. If this actor is not opaque, throw an exception.  This method also resets the protected variable _stopRequested to false, so if a derived class overrides this method, then it should also do that.  This method is read-synchronized on the workspace, so the preinitialize() method of the director need not be, assuming it is only called from here.
 * @exception IllegalActionException If there is no director, orif the director's preinitialize() method throws it, or if this actor is not opaque.
 */
public void initialize() throws IllegalActionException {
  super.initialize();
  try {
    _generatingCode=true;
    if (_modelChanged()) {
      super.preinitialize();
      executeChangeRequests();
      _generateCode();
    }
    String className=CodeGeneratorAdapter.generateName(this);
    URL url=_codeGenerator.codeDirectory.asFile().toURI().toURL();
    if (((BooleanToken)_codeGenerator.generateInSubdirectory.getToken()).booleanValue()) {
      className=className + "String_Node_Str" + className;
      url=_codeGenerator.codeDirectory.asFile().getParentFile().toURI().toURL();
    }
    if (!url.getPath().endsWith("String_Node_Str")) {
      url=new URL(url.toString() + "String_Node_Str");
    }
    URL[] urls=new URL[]{url};
    URLClassLoader classLoader=null;
    Class<?> classInstance=null;
    try {
      try {
        classLoader=new URLClassLoader(urls);
        classInstance=classLoader.loadClass(className);
      }
 catch (      ClassNotFoundException ex) {
        _generateCode();
        try {
          classInstance=classLoader.loadClass(className);
        }
 catch (        ClassNotFoundException ex2) {
          ex2.printStackTrace();
          throw new ClassNotFoundException("String_Node_Str" + className + "String_Node_Str"+ url+ "String_Node_Str"+ java.util.Arrays.deepToString(classLoader.getURLs())+ "String_Node_Str"+ ex2);
        }
      }
      _objectWrapper=classInstance.newInstance();
      Method[] methods=classInstance.getMethods();
      Method initializeMethod=null;
      for (      Method method : methods) {
        String name=method.getName();
        if (name.equals("String_Node_Str")) {
          _fireMethod=method;
        }
        if (name.equals("String_Node_Str")) {
          initializeMethod=method;
        }
      }
      if (_fireMethod == null) {
        throw new IllegalActionException(this,"String_Node_Str" + "String_Node_Str");
      }
      if (initializeMethod == null) {
        throw new IllegalActionException(this,"String_Node_Str" + "String_Node_Str");
      }
      initializeMethod.invoke(_objectWrapper,(Object[])null);
      if (_debugging) {
        _debug("String_Node_Str");
      }
    }
  finally {
      if (classLoader != null) {
        try {
          classLoader.close();
        }
 catch (        IOException ex) {
          throw new IllegalActionException(this,ex,"String_Node_Str" + (url == null ? "String_Node_Str" : url) + "String_Node_Str");
        }
      }
    }
    recompileThisLevel.setToken(new BooleanToken(false));
    recompileHierarchy.setToken(new BooleanToken(false));
    _compiled=true;
  }
 catch (  Throwable throwable) {
    _objectWrapper=null;
    _fireMethod=null;
    throw new IllegalActionException(this,throwable,"String_Node_Str");
  }
 finally {
    _generatingCode=false;
  }
}