public override void PopupShowAsyncImpl(HeapCellArrayWithStatistics aCells, HeapStatistics aStats, Point aLocalControlCoordinates, Point aScreenCoordinates, Size aOffsetBy, System.Windows.Forms.KeyEventHandler aKeyHandler)
        {
            PopupHide();
            //
            if (aCells.Count == 1)
            {
                HeapCell cell = aCells[0];
                //
                switch (cell.Type)
                {
                default:
                case HeapCell.TType.EAllocated:
                    if (cell.Symbol != null)
                    {
                        iActivePopup = new PopupCellAllocatedSymbols();
                    }
                    else
                    {
                        iActivePopup = new PopupCellAllocatedRaw();
                    }
                    break;

                case HeapCell.TType.EFree:
                    iActivePopup = new PopupCellFree();
                    break;
                }
            }
            else if (aCells.Count > 1)
            {
                iActivePopup = new PopupMultiCellSelection();
                iActivePopup.VisibilityDelay = 0;
            }
            //
            iActivePopup.PopupShowAsync(aScreenCoordinates, aCells, aStats, aOffsetBy, aKeyHandler);
        }
        public override void PopupShowAsyncImpl(HeapCellArrayWithStatistics aCells, HeapStatistics aStats, Point aLocalControlCoordinates, Point aScreenCoordinates, Size aCellBoxSizeIncludingPadding, System.Windows.Forms.KeyEventHandler aKeyHandler)
        {
            PopupHide();
            //
            if (aCells.Count == 1)
            {
                HeapCell cell = aCells[0];

                // If there's a free cell with a symbol (possible, if the user wanted to decode free cell contents)
                // then we should just display the allocated symbol popup (even though it's a free cell!)
                if (cell.Symbol != null)
                {
                    if (cell.Type == HeapCell.TType.EFree)
                    {
                        int x = 0;
                        x++;
                    }
                    iActivePopup = new PopupCellAllocatedSymbols();
                }
                else if (cell.Type == HeapCell.TType.EAllocated)
                {
                    iActivePopup = new PopupCellAllocatedRaw();
                }
                else if (cell.Type == HeapCell.TType.EFree)
                {
                    iActivePopup = new PopupCellFree();
                }

                iActivePopup.ColourFromHoverCoordinate = true;
            }
            else if (aCells.Count > 1)
            {
                iActivePopup = new PopupMultiCellSelection();
                iActivePopup.VisibilityDelay = 0;
            }
            //
            iActivePopup.PopupShowAsync(aScreenCoordinates, aCells, aStats, aCellBoxSizeIncludingPadding, aKeyHandler);
        }