private ImageMoniker GetCompositedImageMoniker(params ImageCompositionLayer[] layers)
        {
            this.AssertIsForeground();

            foreach (var compositeImage in _compositeImages)
            {
                if (compositeImage.Layers.SequenceEqual(layers))
                {
                    return(compositeImage.ImageHandle.Moniker);
                }
            }

            var imageHandle = _imageService.AddCustomCompositeImage(
                virtualWidth: 16, virtualHeight: 16,
                layerCount: layers.Length, layers: layers);

            _compositeImages.Add(new CompositeImage(layers.AsImmutableOrEmpty(), imageHandle));

            var moniker = imageHandle.Moniker;

            return(moniker);
        }