/// <summary>
        /// Displays the allocation layers.
        /// </summary>
        private void DisplayAllocationUnitLayers()
        {
            allocationContainer.IncludeIam = false;
            allocationContainer.ClearMapLayers();

            var unallocated = new AllocationLayer();

            unallocated.Name    = "Available - (Unused)";
            unallocated.Colour  = Color.Gainsboro;
            unallocated.Visible = false;

            allocationContainer.AddMapLayer(unallocated);

            CancelWorkerAndWait(allocUnitBackgroundWorker);

            allocUnitBackgroundWorker.RunWorkerAsync();
        }
        /// <summary>
        /// Handles the PageOver event of the AllocationContainer control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="InternalsViewer.Internals.Pages.PageEventArgs"/> instance containing the event data.</param>
        private void AllocationContainer_PageOver(object sender, PageEventArgs e)
        {
            AllocUnitLabel.Text = string.Empty;

            pageAddressToolStripStatusLabel.Text = e.Address.ToString();

            switch (allocationContainer.Mode)
            {
            case MapMode.Standard:

                if (e.Address.PageId % Database.PfsInterval == 0 || e.Address.PageId == 1)
                {
                    AllocUnitLabel.Text = "PFS";
                }

                if (e.Address.PageId % Database.AllocationInterval < 8)
                {
                    switch (e.Address.PageId % Database.AllocationInterval)
                    {
                    case 0:

                        if (e.Address.PageId == 0)
                        {
                            AllocUnitLabel.Text = "File Header";
                        }

                        break;

                    case 1:

                        AllocUnitLabel.Text = "GAM";
                        break;

                    case 2:

                        AllocUnitLabel.Text = "SGAM";
                        break;

                    case 6:

                        AllocUnitLabel.Text = "DCM";
                        break;

                    case 7:

                        AllocUnitLabel.Text = "BCM";
                        break;

                    case 9:

                        AllocUnitLabel.Text = "Boot Page";
                        break;
                    }
                }

                var layers = AllocationLayer.FindPage(e.Address, allocationContainer.AllocationLayers);

                foreach (var name in layers)
                {
                    if (AllocUnitLabel.Text != string.Empty)
                    {
                        AllocUnitLabel.Text += " | ";
                    }

                    AllocUnitLabel.Text += name;
                }

                break;

            case MapMode.Pfs:

                AllocUnitLabel.Text = allocationContainer.PagePfsByte(e.Address).ToString();
                break;
            }
        }