private void InitializeOpenWithSpecifiedDefinitionMenu() { var hierarchy = FirmwareDefinitionManager.CreateHierarchy(m_definitions); OpenUsingSpecifiedDefinitionMenuItem.DropDownItems.Clear(); foreach (var deviceKvp in hierarchy) { var deviceMenu = new ToolStripMenuItem(deviceKvp.Key, OpenUsingSpecifiedDefinitionMenuItem.Image); foreach (var definitionKvp in deviceKvp.Value) { var kvp = definitionKvp; var definition = kvp.Value; deviceMenu.DropDownItems.Add(definitionKvp.Key, deviceMenu.Image, (s, e) => { OpenDialogAndReadFirmwareOnOk(definition.Name, fileName => m_loader.TryLoadUsingDefinition(fileName, definition)); }); } OpenUsingSpecifiedDefinitionMenuItem.DropDownItems.Add(deviceMenu); } }