protected sealed override async UniTask OnContextActivate(IContext context)
        {
            var serviceSource = await sourceAsset.LoadAssetTaskAsync(LifeTime);

            if (ownServiceLifeTime && serviceSource is IDisposable disposableService)
            {
                disposableService.AddTo(LifeTime);
            }

            var validation = await OnValidateSource(context, serviceSource)
                             .AttachExternalCancellation(LifeTime.TokenSource);

            if (!validation)
            {
                Complete();
                return;
            }

            context = await serviceSource.RegisterAsync(context);

            await OnSourceComplete(context, serviceSource);

            Complete();
        }