/// <summary>
        /// Attempst to modify the collection in the specified way.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="setting"></param>
        /// <param name="value"></param>
        /// <param name="context"></param>
        /// <param name="getter"></param>
        /// <returns></returns>
        public static IResult TrySetValue <T>(this IValueParser <T> setting, string value, Context context, Func <ICollection <T> > getter)
        {
            var cmActionResult = setting.TryGetCMAction(context, ref value);

            if (!cmActionResult.IsSuccess)
            {
                return(cmActionResult);
            }
            var convertResult = setting.TryConvertValue(value, out var result);

            if (!convertResult.IsSuccess)
            {
                return(convertResult);
            }
            return(setting.ModifyCollection(getter(), result, context));
        }