public static IEnumerable <MemoryImage> SplitMemoryImageIntoSectors(byte[] sourceData, MemoryLayout layout)
        {
            var sectorImages = new List <MemoryImage>();

            uint sectorStartAddress = layout.BaseAddress;

            for (uint sectorIndex = 0; sectorIndex < layout.SectorSizes.Count; sectorIndex++)
            {
                uint sectorSize = layout.SectorSizes[(int)sectorIndex];

                byte[] data = new byte[sectorSize];
                Buffer.BlockCopy(sourceData, (int)(sectorStartAddress - layout.BaseAddress), data, 0, data.Length);

                sectorImages.Add(new MemoryImage(data, sectorStartAddress));

                sectorStartAddress += sectorSize;
            }

            return(sectorImages);
        }