public static IYearSequence <T> Fill <T>(this IYearSequence <T> years, int from, int to, Func <T, T> fun)
        {
            var newYears = years.Copy();

            foreach (var y in Enumerable.Range(from, to - from + 1))
            {
                newYears[y] = fun(newYears[y]);
            }
            return(newYears);
        }
 public AbstractProduct(int id, IYearSequence <Money> max)
 {
     Id    = id;
     Max   = max;
     Takes = max.Copy();
 }