Program: 75986
Project: 75986
Buggy source:
private void _setToken(Token newToken) throws IllegalActionException {
  if (newToken == null) {
    if (_valueDependents != null && !_valueDependents.isEmpty()) {
      throw new IllegalActionException(this,"String_Node_Str" + "String_Node_Str");
    }
    _token=null;
    _needsEvaluation=false;
    if (_declaredType instanceof BaseType) {
      _varType=_declaredType;
    }
 else {
      ((StructuredType)_varType).initialize(BaseType.ANY);
    }
  }
 else {
    if (_declaredType.isCompatible(newToken)) {
      newToken=_declaredType.convert(newToken);
    }
 else {
      throw new IllegalActionException(this,"String_Node_Str" + "String_Node_Str" + newToken.getType().toString() + "String_Node_Str"+ "String_Node_Str"+ _varType.toString());
    }
    if (_declaredType instanceof StructuredType) {
      ((StructuredType)_varType).updateType((StructuredType)newToken.getType());
    }
 else {
      _varType=newToken.getType();
    }
    if (_typeAtMost != BaseType.NAT) {
      Type tokenType=newToken.getType();
      int comparison=TypeLattice.compare(tokenType,_typeAtMost);
      if ((comparison == CPO.HIGHER) || (comparison == CPO.INCOMPARABLE)) {
        throw new IllegalActionException(this,"String_Node_Str" + tokenType.toString() + "String_Node_Str"+ _typeAtMost.toString());
      }
    }
    if (_noTokenYet) {
      _initialExpression=_currentExpression;
      if (_currentExpression == null) {
        _initialToken=newToken;
      }
      _noTokenYet=false;
    }
    _token=newToken;
    _needsEvaluation=false;
  }
}

Fixed version (ground truth):
private void _setToken(Token newToken) throws IllegalActionException {
  if (newToken == null) {
    if (_valueDependents != null && !_valueDependents.isEmpty()) {
      throw new IllegalActionException(this,"String_Node_Str" + "String_Node_Str");
    }
    _token=null;
    _needsEvaluation=false;
    if (_declaredType instanceof BaseType) {
      _varType=_declaredType;
    }
 else {
      ((StructuredType)_varType).initialize(BaseType.ANY);
    }
  }
 else {
    if (_declaredType.isCompatible(newToken)) {
      if (_declaredType instanceof StructuredType) {
        ((StructuredType)_declaredType).initialize(BaseType.ANY);
      }
      newToken=_declaredType.convert(newToken);
    }
 else {
      throw new IllegalActionException(this,"String_Node_Str" + "String_Node_Str" + newToken.getType().toString() + "String_Node_Str"+ "String_Node_Str"+ _varType.toString());
    }
    if (_declaredType instanceof StructuredType) {
      ((StructuredType)_varType).updateType((StructuredType)newToken.getType());
    }
 else {
      _varType=newToken.getType();
    }
    if (_typeAtMost != BaseType.NAT) {
      Type tokenType=newToken.getType();
      int comparison=TypeLattice.compare(tokenType,_typeAtMost);
      if ((comparison == CPO.HIGHER) || (comparison == CPO.INCOMPARABLE)) {
        throw new IllegalActionException(this,"String_Node_Str" + tokenType.toString() + "String_Node_Str"+ _typeAtMost.toString());
      }
    }
    if (_noTokenYet) {
      _initialExpression=_currentExpression;
      if (_currentExpression == null) {
        _initialToken=newToken;
      }
      _noTokenYet=false;
    }
    _token=newToken;
    _needsEvaluation=false;
  }
}