public static FormMain CreateForm(IDatabaseCoordinator coordinator, ByteHolder holder,
                                          OrdinaryDifferentialEquations.IDifferentialEquationSolver ordSolver,
                                          DataPerformer.Portable.DifferentialEquationProcessors.DifferentialEquationProcessor diffProcessor,
                                          DataPerformer.Portable.Interfaces.IDataRuntimeFactory strategy,
                                          IApplicationInitializer[] initializers,
                                          IUIFactory[] factories,
                                          bool throwsRepeatException, LightDictionary <string, ButtonWrapper[]> buttons,
                                          Icon icon, string filename, Dictionary <string, object>[] resources, string text,
                                          string ext, string fileFilter, TextWriter logWriter, TestCategory.Interfaces.ITestInterface testInterface)
        {
            EngineeringUIFactory factory = new EngineeringUIFactory(factories, true, ext);

            StaticExtensionDiagramUIFactory.UIFactory = factory;
            IDatabaseCoordinator c = coordinator;

            if (c == null)
            {
                c = AssemblyService.StaticExtensionAssemblyService.GetFirstInterfaceObjectFromBaseDirectory <IDatabaseCoordinator>();
            }
            EngineeringInitializer initializer = new EngineeringInitializer(c, ordSolver, diffProcessor,
                                                                            strategy, initializers, throwsRepeatException, resources, logWriter);
            DefaultApplicationCreator creator = new DefaultApplicationCreator(c, buttons, icon, factory, holder,
                                                                              filename, factory.Start, resources, text,
                                                                              ext, fileFilter, initializer, logWriter, testInterface);

            return(CreateForm(creator));
        }
        public static FormMain CreateForm(IDatabaseCoordinator coordinator, ByteHolder holder,
                                          OrdinaryDifferentialEquations.IDifferentialEquationSolver ordSolver,
                                          DataPerformer.Portable.DifferentialEquationProcessors.DifferentialEquationProcessor diffProcessor,
                                          IApplicationInitializer[] initializers,
                                          IUIFactory[] factories,
                                          bool throwsRepeatException, LightDictionary <string, ButtonWrapper[]> buttons,
                                          Icon icon, string filename, Dictionary <string, object>[] resources, string text,
                                          string ext, string fileFilter, TextWriter logWriter, TestCategory.Interfaces.ITestInterface testInterface)
        {
            EngineeringUIFactory   factory     = new EngineeringUIFactory(factories, true, ext);
            EngineeringInitializer initializer = new EngineeringInitializer(coordinator, ordSolver, diffProcessor,
                                                                            DataPerformer.Runtime.DataRuntimeFactory.Object, initializers, throwsRepeatException, resources, logWriter);
            DefaultApplicationCreator creator = new DefaultApplicationCreator(coordinator, buttons, icon, factory, holder, filename,
                                                                              factory.Start, resources, text,
                                                                              ext, fileFilter, initializer, logWriter, testInterface);

            return(CreateForm(creator));
        }