private static void Process(IList<ComposerEraViewModel> composerEraViewModels)
        {
            var count = composerEraViewModels.Count;

            for (int i = 0; i < count - 1; i++)
            {
                var era1StartDate = composerEraViewModels[i].Dates.Earliest();
                var era1EndDate = composerEraViewModels[i].Dates.Latest();

                var era2StartDate = composerEraViewModels[i + 1].Dates.Earliest();
                var era2EndDate = composerEraViewModels[i + 1].Dates.Latest();

                if (era2StartDate < era1EndDate)
                {
                    var transitionBrush = new LinearGradientBrush();
                    transitionBrush.StartPoint = new Point(0, 0.5);
                    transitionBrush.EndPoint = new Point(1, 0.5);
                    transitionBrush.GradientStops.Add(new GradientStop(((SolidColorBrush)composerEraViewModels[i].Background).Color, 0));
                    transitionBrush.GradientStops.Add(new GradientStop(((SolidColorBrush)composerEraViewModels[i + 1].Background).Color, 1));

                    var transitionEra = new ComposerEraViewModel(null, new ExtendedDateTimeInterval(era2StartDate, era1EndDate), transitionBrush, Brushes.White);

                    composerEraViewModels[i].Dates = new ExtendedDateTimeInterval(era1StartDate, era2StartDate);
                    composerEraViewModels[i + 1].Dates = new ExtendedDateTimeInterval(era1EndDate, era2EndDate);

                    composerEraViewModels.Add(transitionEra);
                }
            }
        }
        public static List<ComposerEraViewModel> Build(IList<Era> eraList)
        {
            var composerEraViewModels = new List<ComposerEraViewModel>();

            foreach (var era in eraList)
            {
                var background = (SolidColorBrush)null;

                if (era.Name == "Medieval")
                {
                    background = new SolidColorBrush(Color.FromRgb(153, 153, 153));            // #FF999999
                }
                else if (era.Name == "Renaissance")
                {
                    background = new SolidColorBrush(Color.FromRgb(155, 128, 181));            // #FF9B80B5
                }
                else if (era.Name == "Baroque")
                {
                    background = new SolidColorBrush(Color.FromRgb(204, 77, 77));              // #FFCC4D4D
                }
                else if (era.Name == "Classical")
                {
                    background = new SolidColorBrush(Color.FromRgb(51, 151, 193));             // #FF3397C1
                }
                else if (era.Name == "Romantic")
                {
                    background = new SolidColorBrush(Color.FromRgb(69, 168, 90));              // #FF45A85A
                }
                else if (era.Name == "20th Century")
                {
                    background = new SolidColorBrush(Color.FromRgb(160, 118, 88));             // #FFA962E0
                }
                else if (era.Name == "21st Century")
                {
                    background = new SolidColorBrush(Color.FromRgb(74, 142, 165));
                }

                var musicEra = new ComposerEraViewModel(era.Name, ExtendedDateTimeInterval.Parse(era.Dates), background, Brushes.White);

                composerEraViewModels.Add(musicEra);
            }

            Process(composerEraViewModels);

            return composerEraViewModels;
        }