public Task LoadAsync()
        {
            AbstractProjectDynamicLoadInstance instance;

            lock (_lock)
            {
                if (_instance == null)
                {
                    _instance = CreateInstance();
                }

                instance = _instance;
            }

            return(instance.InitializeAsync());
        }
        public Task UnloadAsync()
        {
            AbstractProjectDynamicLoadInstance instance = null;

            lock (_lock)
            {
                if (_instance != null)
                {
                    instance  = _instance;
                    _instance = null;
                }
            }

            if (instance != null)
            {
                return(instance.DisposeAsync());
            }

            return(Task.CompletedTask);
        }