public override async Task InitializeAsync(IUpgradeContext context, CancellationToken token)
        {
            await base.InitializeAsync(context, token).ConfigureAwait(false);

            // Normally, the upgrader will apply steps one at a time
            // at the user's instruction. In the case of parent and child steps,
            // the parent has any top-level application done after the children.
            // In the case of the ConfigUpdateStep, the parent (this step's parent)
            // doesn't need to apply anything.
            // Therefore, automatically apply the parent ConfigUpdaterStep's updater
            // once all its children have been applied.
            if (_parentStep.SubSteps.All(s => s.IsDone))
            {
                await _parentStep.ApplyAsync(context, token).ConfigureAwait(false);
            }
        }
 public override async Task <bool> ExecuteAsync(IUpgradeContext context, CancellationToken token)
 {
     return(await _step.ApplyAsync(context, token).ConfigureAwait(false));
 }