private IContainer performInitialization()
        {
            // We do not want to register the IoC container to avoid static pollution that may collide with OSPSuite-R
            var container = InfrastructureRegister.Initialize(registerContainerAsStatic: false);

            using (container.OptimizeDependencyResolution())
            {
                container.RegisterImplementationOf(new SynchronizationContext());
                container.AddRegister(x => x.FromType <RRegister>());
                container.AddRegister(x => x.FromType <CoreRegister>());
                container.AddRegister(x => x.FromType <InfrastructureRegister>());
                InfrastructureRegister.RegisterSerializationDependencies(container);
                registerMinimalImplementations(container);
            }

            var configuration = container.Resolve <IPKSimConfiguration>();
            var currentPath   = new FileInfo(Assembly.GetAssembly(GetType()).Location).DirectoryName;

            if (!File.Exists(configuration.PKSimDbPath))
            {
                configuration.PKSimDbPath = Path.Combine(currentPath, CoreConstants.PK_SIM_DB_FILE);
            }

            if (!File.Exists(configuration.PKParametersFilePath))
            {
                configuration.PKParametersFilePath = Path.Combine(currentPath, Constants.Files.PK_PARAMETERS_FILE_NAME);
            }

            if (!File.Exists(configuration.DimensionFilePath))
            {
                configuration.DimensionFilePath = Path.Combine(currentPath, Constants.Files.DIMENSIONS_FILE_NAME);
            }

            // This will log the version of PKSIm used to R
            Console.WriteLine(PKSimConstants.Information.InitializingPKSim(CoreConstants.PRODUCT_NAME, configuration.FullVersion));

            // Serialization mapping will require access to PKSim DB and as such, it needs to be performed after the DB was set.
            InfrastructureRegister.LoadDefaultEntities(container);
            return(container);
        }