public void DoIncrements(Func<VersionFormatter, string, IncrementMethod, string, string> processIncrementMethod, Dictionary<string, List<string>> arguments, VersionFormatter formatter)
 {
     var safeArgs = new SafeDictionay<string, List<string>>(arguments);
     Numbers.Major = processIncrementMethod(formatter, Numbers.Major, Increments.Major, safeArgs[Parameters.Major.TL()]?.First());
     Numbers.Minor = processIncrementMethod(formatter, Numbers.Minor, Increments.Minor, safeArgs[Parameters.Minor.TL()]?.First());
     Numbers.Patch = processIncrementMethod(formatter, Numbers.Patch, Increments.Patch, safeArgs[Parameters.Patch.TL()]?.First());
     Numbers.Build = processIncrementMethod(formatter, Numbers.Build, Increments.Build, safeArgs[Parameters.Build.TL()]?.First());
     Numbers.Revision = processIncrementMethod(formatter, Numbers.Revision, Increments.Revision, safeArgs[Parameters.Revision.TL()]?.First());
 }
        private static void ValidateDoVersioningArguments()
        {
            var safeArgs = new SafeDictionay<string, List<string>>(Arguments);
            bool valid = safeArgs[Parameters.VCPath.TL()]?.Any() ?? false;

            if (safeArgs.ContainsKey(Parameters.GenerateVC.TL()) && !File.Exists(safeArgs[Parameters.VCPath.TL()].First()))
            {
                throw new FileNotFoundException($"File not found:{Arguments[Parameters.VCPath].First()}", Arguments[Parameters.VCPath].First());
            }

            valid = valid && ValidateAction();

            if (!valid)
            {
                throw new WrongArgumentsException {Command = Commands.DoVersioning};
            }
        }