Inheritance: IProgressLeaf
        public static PackageProgress SetupSynqProgress(string title = "Network mods") {
            var packageFetching = new ProgressLeaf("Preparing");
            var networkModsProcessing = new ProgressContainer("Downloading", 9);
            var cleanup = new ProgressLeaf("Cleaning");

            return new PackageProgress {
                PackageFetching = packageFetching,
                Processing = networkModsProcessing,
                Cleanup = cleanup
            };
        }
 private async Task ProcessPackageInternal(Package package, ProgressLeaf p) {
     Repository.Log("\nChecking out {0} into {1}, please be patient...", package.MetaData.GetFullName(),
         package.WorkingPath);
     switch (Settings.CheckoutType) {
     case CheckoutType.NormalCheckout:
         await package.CheckoutAsync(p).ConfigureAwait(false);
         break;
     case CheckoutType.CheckoutWithoutRemoval:
         await package.CheckoutWithoutRemovalAsync(p).ConfigureAwait(false);
         break;
     default:
         throw new ArgumentOutOfRangeException();
     }
 }