public DefaultTabHeaderPanel(ITabControl tabControl,
                                     IVisualBootstrapper visualBootstrapper) :
            base(visualBootstrapper)
        {
            _indicatorRect = new RenderRectangle();
            _itemsControl  = tabControl;
            _tabsUsed      = Size.Empty;
            _indicatord    = Size.Empty;

            _indicator = new HorizontalRule(visualBootstrapper)
            {
                HorizontalAlignment = HorizontalAlignments.Left,
                Background          = visualBootstrapper.ColorPalette.Secondary
            };
            MarginProperty.AddTransition(_indicator, new ThicknessTransition(_indicator,
                                                                             MarginProperty, TimeSpan.FromSeconds(0.3), TimeSpan.Zero, TransitionFunctionType.Ease));
            WidthProperty.AddTransition(_indicator, new QuantifiedDoubleTransition(_indicator,
                                                                                   WidthProperty, TimeSpan.FromSeconds(0.3), TimeSpan.Zero, TransitionFunctionType.Ease));

            _separator = new HorizontalRule(visualBootstrapper);

            Background = visualBootstrapper.ColorPalette.Background;

            var stackPanel = new UniformStackPanel(visualBootstrapper)
            {
                Orientation = Orientations.Horizontal
            };

            var sourcePropertyAccessor = visualBootstrapper.GetPropertyAccessor(
                tabControl.GetType(), nameof(tabControl.TabItems));

            var spBinding = new OneWayCollectionBinding(tabControl, nameof(tabControl.TabItems),
                                                        stackPanel, nameof(Children), null, sourcePropertyAccessor);

            stackPanel.AddBinding(spBinding);

            _scrollPanel = new ScrollPanel(visualBootstrapper)
            {
                Content               = stackPanel,
                ScrollMode            = ScrollMode.Horizontal,
                IsScrollWithMouseDrag = true,
                VerticalAlignment     = VerticalAlignments.Top
            };

            VerticalAlignment = VerticalAlignments.Top;

            AddChildren(_scrollPanel, _indicator, _separator);

            tabControl.PropertyChanged += OnTabPropertyChanged;
        }