Program: 72480
Project: 72480
Buggy source:
/** 
 * Instantiate the slave FMU component.
 * @exception IllegalActionException If it cannot be instantiated.
 */
@Override public void preinitialize() throws IllegalActionException {
  if (_fmiModelDescription == null) {
    throw new IllegalActionException(this,"String_Node_Str" + "String_Node_Str");
  }
  super.preinitialize();
  if (_debugging) {
    _debugToStdOut("String_Node_Str");
  }
  _numberOfSteps=0;
  _numberOfStateEvents=0;
  _numberOfStepEvents=0;
  _numberOfTimeEvents=0;
  _useQSS=false;
  Director director=getDirector();
  if ((director instanceof QSSDirector)) {
    _useQSS=true;
    _outputQuantum=((QSSDirector)getDirector()).getRelativeQuantum();
    if (_outputQuantum == 0.0) {
      throw new IllegalActionException(this,"String_Node_Str");
    }
  }
  if (_useRawJNI()) {
    String buildLibrary="String_Node_Str";
    String installLibrary="String_Node_Str";
    try {
      if (_debugging) {
        _debugToStdOut("String_Node_Str" + buildLibrary);
      }
      UtilityFunctions.loadLibrary(buildLibrary);
    }
 catch (    Throwable buildThrowable) {
      try {
        if (_debugging) {
          _debugToStdOut("String_Node_Str" + buildLibrary + "String_Node_Str"+ buildThrowable+ "String_Node_Str"+ installLibrary);
        }
        UtilityFunctions.loadLibrary(installLibrary);
      }
 catch (      Throwable installThrowable) {
        throw new IllegalActionException(this,installThrowable,"String_Node_Str" + installLibrary + "String_Node_Str"+ buildLibrary+ "String_Node_Str"+ buildThrowable);
      }
    }
  }
 else {
    try {
      _nativeLibrary=_fmiModelDescription.getNativeLibrary();
    }
 catch (    IOException e1) {
      throw new IllegalActionException(this,e1,"String_Node_Str");
    }
    if (_nativeLibrary == null) {
      throw new IllegalActionException(this,"String_Node_Str");
    }
    _checkFmiCommon();
  }
  try {
    if (_fmiModelDescription.modelExchange) {
      try {
        if (_fmiVersion < 2.0 || !_completedIntegratorStepNotNeeded()) {
          _fmiCompletedIntegratorStepFunction=_fmiModelDescription.getFmiFunction("String_Node_Str");
        }
      }
 catch (      Throwable throwable) {
        throw new IllegalActionException(this,throwable,"String_Node_Str" + _fmuFileName + "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str");
      }
      if (_fmiVersion < 2.0) {
        try {
          _fmiFreeModelInstanceFunction=_fmiModelDescription.getFmiFunction("String_Node_Str");
        }
 catch (        UnsatisfiedLinkError ex) {
          throw new IllegalActionException("String_Node_Str" + "String_Node_Str" + "String_Node_Str"+ "String_Node_Str");
        }
      }
 else {
        try {
          _fmiFreeInstanceFunction=_fmiModelDescription.getFmiFunction("String_Node_Str");
        }
 catch (        UnsatisfiedLinkError ex) {
          throw new IllegalActionException("String_Node_Str" + "String_Node_Str");
        }
      }
      _fmiGetContinuousStatesFunction=_fmiModelDescription.getFmiFunction("String_Node_Str");
      _fmiSetContinuousStates=_fmiModelDescription.getFmiFunction("String_Node_Str");
      _fmiGetDerivativesFunction=_fmiModelDescription.getFmiFunction("String_Node_Str");
      try {
        _fmiGetEventIndicatorsFunction=_fmiModelDescription.getFmiFunction("String_Node_Str");
      }
 catch (      UnsatisfiedLinkError ex) {
        _fmiGetEventIndicatorsFunction=null;
      }
      if (_fmiVersion < 1.5) {
        _fmiInitializeFunction=_fmiModelDescription.getFmiFunction("String_Node_Str");
        _fmiInstantiateModelFunction=_fmiModelDescription.getFmiFunction("String_Node_Str");
      }
 else       if (_fmiVersion >= 1.5 && _fmiVersion < 2.0) {
        throw new IllegalActionException(this,"String_Node_Str" + _fmiVersion);
      }
 else {
        _fmiEnterContinuousTimeModeFunction=_fmiModelDescription.getFmiFunction("String_Node_Str");
        _fmiEnterEventModeFunction=_fmiModelDescription.getFmiFunction("String_Node_Str");
        _fmiEnterInitializationModeFunction=_fmiModelDescription.getFmiFunction("String_Node_Str");
        _fmiExitInitializationModeFunction=_fmiModelDescription.getFmiFunction("String_Node_Str");
        _fmiInstantiateFunction=_fmiModelDescription.getFmiFunction("String_Node_Str");
        _fmiNewDiscreteStatesFunction=_fmiModelDescription.getFmiFunction("String_Node_Str");
      }
      _fmiSetTimeFunction=_fmiModelDescription.getFmiFunction("String_Node_Str");
      _fmiTerminateFunction=_fmiModelDescription.getFmiFunction("String_Node_Str");
      if (_fmiVersion >= 2.0) {
        try {
          _fmiSetupExperimentFunction=_fmiModelDescription.getFmiFunction("String_Node_Str");
        }
 catch (        UnsatisfiedLinkError ex) {
          throw new IllegalActionException("String_Node_Str" + "String_Node_Str" + "String_Node_Str");
        }
      }
      if (_fmiModelDescription.providesDirectionalDerivative) {
        _fmiGetDirectionalDerivativeFunction=_fmiModelDescription.getFmiFunction("String_Node_Str");
      }
      _checkFmiModelExchange();
    }
 else {
      try {
        _fmiDoStepFunction=_fmiModelDescription.getFmiFunction("String_Node_Str");
      }
 catch (      Throwable throwable) {
        throw new IllegalActionException(this,throwable,"String_Node_Str" + "String_Node_Str" + "String_Node_Str"+ "String_Node_Str" + modelExchange.getExpression() + "String_Node_Str"+ _fmiModelDescription.modelExchange);
      }
      if (_fmiVersion < 2.0) {
        try {
          _fmiFreeSlaveInstanceFunction=_fmiModelDescription.getFmiFunction("String_Node_Str");
        }
 catch (        UnsatisfiedLinkError ex) {
          throw new IllegalActionException("String_Node_Str" + "String_Node_Str" + "String_Node_Str"+ "String_Node_Str");
        }
      }
 else {
        _fmiEnterInitializationModeFunction=_fmiModelDescription.getFmiFunction("String_Node_Str");
        _fmiExitInitializationModeFunction=_fmiModelDescription.getFmiFunction("String_Node_Str");
        try {
          _fmiFreeInstanceFunction=_fmiModelDescription.getFmiFunction("String_Node_Str");
        }
 catch (        UnsatisfiedLinkError ex) {
          throw new IllegalActionException("String_Node_Str" + "String_Node_Str");
        }
      }
      if (_fmiVersion < 2.0) {
        _fmiInitializeSlaveFunction=_fmiModelDescription.getFmiFunction("String_Node_Str");
        _fmiInstantiateSlaveFunction=_fmiModelDescription.getFmiFunction("String_Node_Str");
        if (_fmiVersion >= 1.5) {
          _fmiInstantiateFunction=_fmiInstantiateSlaveFunction;
        }
      }
 else {
        _fmiInstantiateFunction=_fmiModelDescription.getFmiFunction("String_Node_Str");
      }
      if (_fmiVersion < 2.0) {
        _fmiTerminateSlaveFunction=_fmiModelDescription.getFmiFunction("String_Node_Str");
      }
 else {
        _fmiTerminateFunction=_fmiModelDescription.getFmiFunction("String_Node_Str");
      }
      try {
        _fmiGetRealStatusFunction=_fmiModelDescription.getFmiFunction("String_Node_Str");
      }
 catch (      UnsatisfiedLinkError ex) {
        _fmiGetRealStatusFunction=null;
      }
      if (_fmiModelDescription.canGetAndSetFMUstate) {
        _fmiFreeFMUstateFunction=_fmiModelDescription.getFmiFunction("String_Node_Str");
        _fmiGetFMUstateFunction=_fmiModelDescription.getFmiFunction("String_Node_Str");
        _fmiSetFMUstate=_fmiModelDescription.getFmiFunction("String_Node_Str");
      }
 else {
        _fmiFreeFMUstateFunction=null;
        _fmiGetFMUstateFunction=null;
        _fmiSetFMUstate=null;
      }
      if (_fmiVersion >= 2.0) {
        try {
          _fmiSetupExperimentFunction=_fmiModelDescription.getFmiFunction("String_Node_Str");
        }
 catch (        UnsatisfiedLinkError ex) {
          throw new IllegalActionException("String_Node_Str" + "String_Node_Str" + "String_Node_Str");
        }
      }
      if (_fmiModelDescription.providesDirectionalDerivative) {
        _fmiGetDirectionalDerivativeFunction=_fmiModelDescription.getFmiFunction("String_Node_Str");
      }
      _checkFmiCoSimulation();
    }
  }
 catch (  IOException ex) {
    throw new IllegalActionException(this,ex,"String_Node_Str");
  }
  String modelIdentifier=_fmiModelDescription.modelIdentifier;
  String mimeType="String_Node_Str";
  double timeout=1000;
  byte toBeVisible=0;
  int toBeVisibleFMI2=0;
  if (((BooleanToken)visible.getToken()).booleanValue()) {
    toBeVisible=1;
    toBeVisibleFMI2=1;
  }
  byte loggingOn=_debugging ? (byte)1 : (byte)0;
  int loggingOnFMI2=_debugging ? 1 : 0;
  byte interactive=0;
  if (!_useRawJNI()) {
    if (_fmiVersion < 1.5) {
      _callbacks=new FMICallbackFunctions.ByValue(new FMULibrary.FMULogger(_fmiModelDescription),new FMULibrary.FMUAllocateMemory(),new FMULibrary.FMUFreeMemory(),new FMULibrary.FMUStepFinished());
      if (_fmiModelDescription.modelExchange) {
        if (_debugging) {
          _debugToStdOut("String_Node_Str" + modelIdentifier + "String_Node_Str");
        }
        _fmiComponent=(Pointer)_fmiInstantiateModelFunction.invoke(Pointer.class,new Object[]{getFullName(),_fmiModelDescription.guid,_callbacks,loggingOn});
      }
 else {
        if (_debugging) {
          _debugToStdOut("String_Node_Str" + modelIdentifier + "String_Node_Str");
        }
        _fmiComponent=(Pointer)_fmiInstantiateSlaveFunction.invoke(Pointer.class,new Object[]{getFullName(),_fmiModelDescription.guid,_fmiModelDescription.fmuResourceLocation,mimeType,timeout,toBeVisible,interactive,_callbacks,loggingOn});
      }
    }
 else {
      Pointer fmiEnvironment=_fmiModelDescription.getFMUAllocateMemory().apply(new NativeSizeT(1),new NativeSizeT(Pointer.SIZE));
      _callbacks20=new FMI20CallbackFunctions(new FMULibrary.FMULogger(_fmiModelDescription),_fmiModelDescription.getFMUAllocateMemory(),new FMULibrary.FMUFreeMemory(),new FMULibrary.FMUStepFinished(),fmiEnvironment);
      if (_debugging) {
        _debugToStdOut("String_Node_Str" + modelIdentifier + "String_Node_Str");
      }
      int fmiType=1;
      if (_fmiModelDescription.modelExchange) {
        fmiType=0;
      }
      if (_fmiVersion < 1.5) {
        if (_fmiModelDescription.modelExchange) {
          throw new IllegalActionException(this,"String_Node_Str" + _fmiVersion);
        }
 else {
          _fmiComponent=(Pointer)_fmiInstantiateSlaveFunction.invoke(Pointer.class,new Object[]{getFullName(),_fmiModelDescription.guid,_fmiModelDescription.fmuResourceLocation,_callbacks,toBeVisible,loggingOn});
        }
      }
 else       if (_fmiVersion > 1.0 && _fmiVersion < 2.0) {
        _fmiComponent=(Pointer)_fmiInstantiateSlaveFunction.invoke(Pointer.class,new Object[]{getFullName(),_fmiModelDescription.guid,_fmiModelDescription.fmuResourceLocation,_callbacks20,toBeVisibleFMI2,loggingOnFMI2});
      }
 else       if (_fmiVersion >= 2.0) {
        _fmiComponent=(Pointer)_fmiInstantiateFunction.invoke(Pointer.class,new Object[]{getFullName(),fmiType,_fmiModelDescription.guid,_fmiModelDescription.fmuResourceLocation,_callbacks20,toBeVisibleFMI2,loggingOnFMI2});
      }
      if (_debugging) {
        _debugToStdOut("String_Node_Str");
      }
    }
    if (_fmiComponent == null || _fmiComponent.equals(Pointer.NULL)) {
      throw new IllegalActionException(this,"String_Node_Str");
    }
  }
 else {
    final Time currentTime=director.getModelTime();
    final Time startTime=director.getModelStartTime();
    final Time stopTime=director.getModelStopTime();
    final double relativeTolerance=1e-4;
    String fmuLibPath=null;
    try {
      fmuLibPath=_fmiModelDescription.getNativeLibraryPath();
    }
 catch (    IOException ex) {
      throw new IllegalActionException(this,ex,"String_Node_Str");
    }
    double[] derivatives=new double[_fmiModelDescription.numberOfContinuousStates];
    _fmiJNIComponent=runNativeFMU(0,0,modelIdentifier,fmuLibPath,_fmiModelDescription.fmuResourceLocation,startTime.getDoubleValue(),stopTime.getDoubleValue(),currentTime.getDoubleValue(),0,relativeTolerance,toBeVisible,loggingOn,_fmiModelDescription.guid,derivatives,null,null,null,null,null,null,0,null,null,null,null,null);
  }
}

Fixed version (ground truth):
/** 
 * Instantiate the slave FMU component.
 * @exception IllegalActionException If it cannot be instantiated.
 */
@Override public void preinitialize() throws IllegalActionException {
  if (_fmiModelDescription == null) {
    throw new IllegalActionException(this,"String_Node_Str" + "String_Node_Str");
  }
  super.preinitialize();
  if (_debugging) {
    _debugToStdOut("String_Node_Str");
  }
  _numberOfSteps=0;
  _numberOfStateEvents=0;
  _numberOfStepEvents=0;
  _numberOfTimeEvents=0;
  _useQSS=false;
  Director director=getDirector();
  if ((director instanceof QSSDirector)) {
    _useQSS=true;
    _outputQuantum=Math.max(((QSSDirector)getDirector()).getRelativeQuantum(),((QSSDirector)getDirector()).getAbsoluteQuantum());
  }
  if (_useRawJNI()) {
    String buildLibrary="String_Node_Str";
    String installLibrary="String_Node_Str";
    try {
      if (_debugging) {
        _debugToStdOut("String_Node_Str" + buildLibrary);
      }
      UtilityFunctions.loadLibrary(buildLibrary);
    }
 catch (    Throwable buildThrowable) {
      try {
        if (_debugging) {
          _debugToStdOut("String_Node_Str" + buildLibrary + "String_Node_Str"+ buildThrowable+ "String_Node_Str"+ installLibrary);
        }
        UtilityFunctions.loadLibrary(installLibrary);
      }
 catch (      Throwable installThrowable) {
        throw new IllegalActionException(this,installThrowable,"String_Node_Str" + installLibrary + "String_Node_Str"+ buildLibrary+ "String_Node_Str"+ buildThrowable);
      }
    }
  }
 else {
    try {
      _nativeLibrary=_fmiModelDescription.getNativeLibrary();
    }
 catch (    IOException e1) {
      throw new IllegalActionException(this,e1,"String_Node_Str");
    }
    if (_nativeLibrary == null) {
      throw new IllegalActionException(this,"String_Node_Str");
    }
    _checkFmiCommon();
  }
  try {
    if (_fmiModelDescription.modelExchange) {
      try {
        if (_fmiVersion < 2.0 || !_completedIntegratorStepNotNeeded()) {
          _fmiCompletedIntegratorStepFunction=_fmiModelDescription.getFmiFunction("String_Node_Str");
        }
      }
 catch (      Throwable throwable) {
        throw new IllegalActionException(this,throwable,"String_Node_Str" + _fmuFileName + "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str");
      }
      if (_fmiVersion < 2.0) {
        try {
          _fmiFreeModelInstanceFunction=_fmiModelDescription.getFmiFunction("String_Node_Str");
        }
 catch (        UnsatisfiedLinkError ex) {
          throw new IllegalActionException("String_Node_Str" + "String_Node_Str" + "String_Node_Str"+ "String_Node_Str");
        }
      }
 else {
        try {
          _fmiFreeInstanceFunction=_fmiModelDescription.getFmiFunction("String_Node_Str");
        }
 catch (        UnsatisfiedLinkError ex) {
          throw new IllegalActionException("String_Node_Str" + "String_Node_Str");
        }
      }
      _fmiGetContinuousStatesFunction=_fmiModelDescription.getFmiFunction("String_Node_Str");
      _fmiSetContinuousStates=_fmiModelDescription.getFmiFunction("String_Node_Str");
      _fmiGetDerivativesFunction=_fmiModelDescription.getFmiFunction("String_Node_Str");
      try {
        _fmiGetEventIndicatorsFunction=_fmiModelDescription.getFmiFunction("String_Node_Str");
      }
 catch (      UnsatisfiedLinkError ex) {
        _fmiGetEventIndicatorsFunction=null;
      }
      if (_fmiVersion < 1.5) {
        _fmiInitializeFunction=_fmiModelDescription.getFmiFunction("String_Node_Str");
        _fmiInstantiateModelFunction=_fmiModelDescription.getFmiFunction("String_Node_Str");
      }
 else       if (_fmiVersion >= 1.5 && _fmiVersion < 2.0) {
        throw new IllegalActionException(this,"String_Node_Str" + _fmiVersion);
      }
 else {
        _fmiEnterContinuousTimeModeFunction=_fmiModelDescription.getFmiFunction("String_Node_Str");
        _fmiEnterEventModeFunction=_fmiModelDescription.getFmiFunction("String_Node_Str");
        _fmiEnterInitializationModeFunction=_fmiModelDescription.getFmiFunction("String_Node_Str");
        _fmiExitInitializationModeFunction=_fmiModelDescription.getFmiFunction("String_Node_Str");
        _fmiInstantiateFunction=_fmiModelDescription.getFmiFunction("String_Node_Str");
        _fmiNewDiscreteStatesFunction=_fmiModelDescription.getFmiFunction("String_Node_Str");
      }
      _fmiSetTimeFunction=_fmiModelDescription.getFmiFunction("String_Node_Str");
      _fmiTerminateFunction=_fmiModelDescription.getFmiFunction("String_Node_Str");
      if (_fmiVersion >= 2.0) {
        try {
          _fmiSetupExperimentFunction=_fmiModelDescription.getFmiFunction("String_Node_Str");
        }
 catch (        UnsatisfiedLinkError ex) {
          throw new IllegalActionException("String_Node_Str" + "String_Node_Str" + "String_Node_Str");
        }
      }
      if (_fmiModelDescription.providesDirectionalDerivative) {
        _fmiGetDirectionalDerivativeFunction=_fmiModelDescription.getFmiFunction("String_Node_Str");
      }
      _checkFmiModelExchange();
    }
 else {
      try {
        _fmiDoStepFunction=_fmiModelDescription.getFmiFunction("String_Node_Str");
      }
 catch (      Throwable throwable) {
        throw new IllegalActionException(this,throwable,"String_Node_Str" + "String_Node_Str" + "String_Node_Str"+ "String_Node_Str" + modelExchange.getExpression() + "String_Node_Str"+ _fmiModelDescription.modelExchange);
      }
      if (_fmiVersion < 2.0) {
        try {
          _fmiFreeSlaveInstanceFunction=_fmiModelDescription.getFmiFunction("String_Node_Str");
        }
 catch (        UnsatisfiedLinkError ex) {
          throw new IllegalActionException("String_Node_Str" + "String_Node_Str" + "String_Node_Str"+ "String_Node_Str");
        }
      }
 else {
        _fmiEnterInitializationModeFunction=_fmiModelDescription.getFmiFunction("String_Node_Str");
        _fmiExitInitializationModeFunction=_fmiModelDescription.getFmiFunction("String_Node_Str");
        try {
          _fmiFreeInstanceFunction=_fmiModelDescription.getFmiFunction("String_Node_Str");
        }
 catch (        UnsatisfiedLinkError ex) {
          throw new IllegalActionException("String_Node_Str" + "String_Node_Str");
        }
      }
      if (_fmiVersion < 2.0) {
        _fmiInitializeSlaveFunction=_fmiModelDescription.getFmiFunction("String_Node_Str");
        _fmiInstantiateSlaveFunction=_fmiModelDescription.getFmiFunction("String_Node_Str");
        if (_fmiVersion >= 1.5) {
          _fmiInstantiateFunction=_fmiInstantiateSlaveFunction;
        }
      }
 else {
        _fmiInstantiateFunction=_fmiModelDescription.getFmiFunction("String_Node_Str");
      }
      if (_fmiVersion < 2.0) {
        _fmiTerminateSlaveFunction=_fmiModelDescription.getFmiFunction("String_Node_Str");
      }
 else {
        _fmiTerminateFunction=_fmiModelDescription.getFmiFunction("String_Node_Str");
      }
      try {
        _fmiGetRealStatusFunction=_fmiModelDescription.getFmiFunction("String_Node_Str");
      }
 catch (      UnsatisfiedLinkError ex) {
        _fmiGetRealStatusFunction=null;
      }
      if (_fmiModelDescription.canGetAndSetFMUstate) {
        _fmiFreeFMUstateFunction=_fmiModelDescription.getFmiFunction("String_Node_Str");
        _fmiGetFMUstateFunction=_fmiModelDescription.getFmiFunction("String_Node_Str");
        _fmiSetFMUstate=_fmiModelDescription.getFmiFunction("String_Node_Str");
      }
 else {
        _fmiFreeFMUstateFunction=null;
        _fmiGetFMUstateFunction=null;
        _fmiSetFMUstate=null;
      }
      if (_fmiVersion >= 2.0) {
        try {
          _fmiSetupExperimentFunction=_fmiModelDescription.getFmiFunction("String_Node_Str");
        }
 catch (        UnsatisfiedLinkError ex) {
          throw new IllegalActionException("String_Node_Str" + "String_Node_Str" + "String_Node_Str");
        }
      }
      if (_fmiModelDescription.providesDirectionalDerivative) {
        _fmiGetDirectionalDerivativeFunction=_fmiModelDescription.getFmiFunction("String_Node_Str");
      }
      _checkFmiCoSimulation();
    }
  }
 catch (  IOException ex) {
    throw new IllegalActionException(this,ex,"String_Node_Str");
  }
  String modelIdentifier=_fmiModelDescription.modelIdentifier;
  String mimeType="String_Node_Str";
  double timeout=1000;
  byte toBeVisible=0;
  int toBeVisibleFMI2=0;
  if (((BooleanToken)visible.getToken()).booleanValue()) {
    toBeVisible=1;
    toBeVisibleFMI2=1;
  }
  byte loggingOn=_debugging ? (byte)1 : (byte)0;
  int loggingOnFMI2=_debugging ? 1 : 0;
  byte interactive=0;
  if (!_useRawJNI()) {
    if (_fmiVersion < 1.5) {
      _callbacks=new FMICallbackFunctions.ByValue(new FMULibrary.FMULogger(_fmiModelDescription),new FMULibrary.FMUAllocateMemory(),new FMULibrary.FMUFreeMemory(),new FMULibrary.FMUStepFinished());
      if (_fmiModelDescription.modelExchange) {
        if (_debugging) {
          _debugToStdOut("String_Node_Str" + modelIdentifier + "String_Node_Str");
        }
        _fmiComponent=(Pointer)_fmiInstantiateModelFunction.invoke(Pointer.class,new Object[]{getFullName(),_fmiModelDescription.guid,_callbacks,loggingOn});
      }
 else {
        if (_debugging) {
          _debugToStdOut("String_Node_Str" + modelIdentifier + "String_Node_Str");
        }
        _fmiComponent=(Pointer)_fmiInstantiateSlaveFunction.invoke(Pointer.class,new Object[]{getFullName(),_fmiModelDescription.guid,_fmiModelDescription.fmuResourceLocation,mimeType,timeout,toBeVisible,interactive,_callbacks,loggingOn});
      }
    }
 else {
      Pointer fmiEnvironment=_fmiModelDescription.getFMUAllocateMemory().apply(new NativeSizeT(1),new NativeSizeT(Pointer.SIZE));
      _callbacks20=new FMI20CallbackFunctions(new FMULibrary.FMULogger(_fmiModelDescription),_fmiModelDescription.getFMUAllocateMemory(),new FMULibrary.FMUFreeMemory(),new FMULibrary.FMUStepFinished(),fmiEnvironment);
      if (_debugging) {
        _debugToStdOut("String_Node_Str" + modelIdentifier + "String_Node_Str");
      }
      int fmiType=1;
      if (_fmiModelDescription.modelExchange) {
        fmiType=0;
      }
      if (_fmiVersion < 1.5) {
        if (_fmiModelDescription.modelExchange) {
          throw new IllegalActionException(this,"String_Node_Str" + _fmiVersion);
        }
 else {
          _fmiComponent=(Pointer)_fmiInstantiateSlaveFunction.invoke(Pointer.class,new Object[]{getFullName(),_fmiModelDescription.guid,_fmiModelDescription.fmuResourceLocation,_callbacks,toBeVisible,loggingOn});
        }
      }
 else       if (_fmiVersion > 1.0 && _fmiVersion < 2.0) {
        _fmiComponent=(Pointer)_fmiInstantiateSlaveFunction.invoke(Pointer.class,new Object[]{getFullName(),_fmiModelDescription.guid,_fmiModelDescription.fmuResourceLocation,_callbacks20,toBeVisibleFMI2,loggingOnFMI2});
      }
 else       if (_fmiVersion >= 2.0) {
        _fmiComponent=(Pointer)_fmiInstantiateFunction.invoke(Pointer.class,new Object[]{getFullName(),fmiType,_fmiModelDescription.guid,_fmiModelDescription.fmuResourceLocation,_callbacks20,toBeVisibleFMI2,loggingOnFMI2});
      }
      if (_debugging) {
        _debugToStdOut("String_Node_Str");
      }
    }
    if (_fmiComponent == null || _fmiComponent.equals(Pointer.NULL)) {
      throw new IllegalActionException(this,"String_Node_Str");
    }
  }
 else {
    final Time currentTime=director.getModelTime();
    final Time startTime=director.getModelStartTime();
    final Time stopTime=director.getModelStopTime();
    final double relativeTolerance=1e-4;
    String fmuLibPath=null;
    try {
      fmuLibPath=_fmiModelDescription.getNativeLibraryPath();
    }
 catch (    IOException ex) {
      throw new IllegalActionException(this,ex,"String_Node_Str");
    }
    double[] derivatives=new double[_fmiModelDescription.numberOfContinuousStates];
    _fmiJNIComponent=runNativeFMU(0,0,modelIdentifier,fmuLibPath,_fmiModelDescription.fmuResourceLocation,startTime.getDoubleValue(),stopTime.getDoubleValue(),currentTime.getDoubleValue(),0,relativeTolerance,toBeVisible,loggingOn,_fmiModelDescription.guid,derivatives,null,null,null,null,null,null,0,null,null,null,null,null);
  }
}