public TestableGenericPlcViewModel(
     IProvidePlcInformation informationProvider,
     ICommandControllers controllerCommander,
     IProvideStatesForScreenActivation states,
     IProvideStatesForScreenActivation detailStates,
     ISaveToFileSystem saver,
     ILoadFromFileSystem loader,
     IAskUser askUser,
     IModuleScreen parent,
     string moduleName)
     : base(informationProvider, controllerCommander, states, detailStates, saver, loader, askUser, parent, moduleName, new NonDispatchingDispatcher())
 {
 }
 /// <summary>
 /// Initializes a new <see cref="GenericPlcViewModel"/> instance.
 /// </summary>
 /// <param name="informationProvider">
 /// The information provider is mainly used to get information about the platform
 /// modules plc controllers, but it also provides some interaction possibilities with those controllers.
 /// </param>
 /// <param name="controllerCommander">
 /// The controller commander provides functions to interact with a certain controller.
 /// This view model is responsible for creating <see cref="MasterDetailViewModel"/> instances which make
 /// use of the controller commander.
 /// </param>
 /// <param name="states">
 /// The states represent the three main view states of the generic page (Loading - Content - Error) and
 /// provide functions to switch between those.
 /// </param>
 /// <param name="detailStates">
 /// The detail states represent the three detail view states of the generic page (Loading - Content - Error) and
 /// provide functions to switch between those.
 /// </param>
 /// <param name="saver">
 /// The saver provides the possibility to save a string to the filesystem, used by the export
 /// functionality of the generic page.
 /// </param>
 /// <param name="loader">
 /// The loader provides the possibility to load a file from the filesystem, used by the import
 /// functionality of the generic page.
 /// </param>
 /// <param name="askUser">
 /// The ask user instance can get used to interact with the user.
 /// </param>
 /// <param name="parent">
 /// The view model of the parent screen is used to navigate back to it.
 /// </param>
 /// <param name="moduleName">
 /// The module name identifies the module this view model is responsible for.
 /// </param>
 /// <param name="dispatcher">
 /// The dispatcher is used to delegate all const-intensive operation to background threads and vice versa.
 /// </param>
 public GenericPlcViewModel(
     IProvidePlcInformation informationProvider,
     ICommandControllers controllerCommander,
     IProvideStatesForScreenActivation states,
     IProvideStatesForScreenActivation detailStates,
     ISaveToFileSystem saver,
     ILoadFromFileSystem loader,
     IAskUser askUser,
     IModuleScreen parent,
     string moduleName,
     IDispatcher dispatcher)
     : this()
 {
     _informationProvider = informationProvider;
     _controllerCommander = controllerCommander;
     _states            = states;
     _detailStates      = detailStates;
     _saver             = saver;
     _loader            = loader;
     _askUser           = askUser;
     _moduleName        = moduleName;
     _parenModuleScreen = parent;
     DisplayName        = "Detail View";
 }