Program: 72883
Project: 72883
Buggy source:
/** 
 * React to a change in an attribute. If the changed attribute matches a parameter of the director, then the corresponding local copy of the parameter value will be updated.
 * @param attribute The changed parameter.
 * @exception IllegalActionException If the parameter set is not valid.
 */
public void attributeChanged(Attribute attribute) throws IllegalActionException {
  if (attribute == mappingFileName) {
    StringToken mappingFileNameToken=(StringToken)mappingFileName.getToken();
    if (mappingFileNameToken == null || mappingFileNameToken.equals("String_Node_Str")) {
      mappingFileName=null;
    }
 else {
      File file=mappingFileName.asFile();
      if (file != null) {
        String filename=file.getAbsolutePath();
        if (!filename.equals("String_Node_Str")) {
          try {
            System.out.println(filename);
            _mappingConstraintSolver.readMapping(filename);
          }
 catch (          IOException ex) {
            throw new IllegalActionException(this,ex,"String_Node_Str" + filename + "String_Node_Str");
          }
          if (_debugging) {
            _debug(_mappingConstraintSolver.toString());
          }
        }
      }
    }
  }
 else   if (attribute == printDebug) {
    if (((BooleanToken)printDebug.getToken()).booleanValue()) {
      _mappingConstraintSolver.turnOnDebugging();
      _timeScheduler.turnOnDebugging();
      _debugger.turnOnDebugging();
    }
 else {
      _mappingConstraintSolver.turnOffDebugging();
      _timeScheduler.turnOffDebugging();
      _debugger.turnOffDebugging();
    }
  }
 else {
    super.attributeChanged(attribute);
  }
}

Fixed version (ground truth):
/** 
 * React to a change in an attribute. If the changed attribute matches a parameter of the director, then the corresponding local copy of the parameter value will be updated.
 * @param attribute The changed parameter.
 * @exception IllegalActionException If the parameter set is not valid.
 */
public void attributeChanged(Attribute attribute) throws IllegalActionException {
  if (attribute == mappingFileName) {
    StringToken mappingFileNameToken=(StringToken)mappingFileName.getToken();
    if (mappingFileNameToken == null || mappingFileNameToken.stringValue().equals("String_Node_Str")) {
      mappingFileName=null;
    }
 else {
      File file=mappingFileName.asFile();
      if (file != null) {
        String filename=file.getAbsolutePath();
        if (!filename.equals("String_Node_Str")) {
          try {
            System.out.println(filename);
            _mappingConstraintSolver.readMapping(filename);
          }
 catch (          IOException ex) {
            throw new IllegalActionException(this,ex,"String_Node_Str" + filename + "String_Node_Str");
          }
          if (_debugging) {
            _debug(_mappingConstraintSolver.toString());
          }
        }
      }
    }
  }
 else   if (attribute == printDebug) {
    if (((BooleanToken)printDebug.getToken()).booleanValue()) {
      _mappingConstraintSolver.turnOnDebugging();
      _timeScheduler.turnOnDebugging();
      _debugger.turnOnDebugging();
    }
 else {
      _mappingConstraintSolver.turnOffDebugging();
      _timeScheduler.turnOffDebugging();
      _debugger.turnOffDebugging();
    }
  }
 else {
    super.attributeChanged(attribute);
  }
}