private static void StartDecompilationOrDisplayDecompiledCode()
        {
            TypeDefinition typeDefinition = GetTypeDefinition(s_currentlySelectedType);

            switch (s_currentDisplayLanguage)
            {
            case DisplayLanguage.CSharp:
            {
                if (GeneratedTypesAndDecompiledCSharpCode.ContainsKey(s_currentlySelectedType))
                {
                    DisplayDecompiledCode(DisplayLanguage.CSharp);
                    break;
                }
                s_decompilationProcess =
                    Decompiler.StartDecompilationProcesses(typeDefinition, DecompiledLanguage.CSharpOnly)
                    .DecompileIntoCSharpProcess;
                s_currentDecompilationStatus = DecompilationStatus.InProgress;
                break;
            }

            case DisplayLanguage.IL:
            {
                if (GeneratedTypesAndDecompiledIlCode.ContainsKey(s_currentlySelectedType))
                {
                    DisplayDecompiledCode(DisplayLanguage.IL);
                    break;
                }
                s_decompilationProcess =
                    Decompiler.StartDecompilationProcesses(typeDefinition, DecompiledLanguage.ILOnly)
                    .DecompileIntoILProcess;
                s_currentDecompilationStatus = DecompilationStatus.InProgress;
                break;
            }
            }
        }
        private void StartDecompilationOrDisplayDecompiledCode()
        {
            switch (_currentDisplayLanguage)
            {
            case DisplayLanguage.CSharp:
            {
                if (_generatedTypesAndDecompiledCSharpCode.ContainsKey(_currentlySelectedTypeDefinition))
                {
                    DisplayDecompiledCode(DisplayLanguage.CSharp);
                    break;
                }
                _decompilationProcess =
                    Decompiler.StartDecompilationProcesses(_currentlySelectedTypeDefinition, DecompiledLanguage.CSharpOnly).DecompileIntoCSharpProcess;
                _currentDecompilationStatus = DecompilationStatus.InProgress;

                break;
            }

            case DisplayLanguage.IL:
            {
                if (_generatedTypesAndDecompiledILCode.ContainsKey(_currentlySelectedTypeDefinition))
                {
                    DisplayDecompiledCode(DisplayLanguage.IL);
                    break;
                }
                _decompilationProcess =
                    Decompiler.StartDecompilationProcesses(_currentlySelectedTypeDefinition, DecompiledLanguage.ILOnly).DecompileIntoILProcess;
                _currentDecompilationStatus = DecompilationStatus.InProgress;

                break;
            }
            }
        }
        private static void DisplayDecompiledCode(DisplayLanguage displayLanguage)
        {
            s_currentlyDisplayedDecompiledCode =
                displayLanguage == DisplayLanguage.CSharp
                ? GeneratedTypesAndDecompiledCSharpCode[s_currentlySelectedType]
                : GeneratedTypesAndDecompiledIlCode[s_currentlySelectedType];

            s_decompiledCodeField.itemsSource = s_currentlyDisplayedDecompiledCode;
            s_currentDecompilationStatus      = DecompilationStatus.Complete;
        }
        private void DisplayDecompiledCode(DisplayLanguage displayLanguage)
        {
            _currentlyDisplayedDecompiledCode =
                displayLanguage == DisplayLanguage.CSharp
                    ? _generatedTypesAndDecompiledCSharpCode[_currentlySelectedTypeDefinition]
                    : _generatedTypesAndDecompiledILCode[_currentlySelectedTypeDefinition];

            _decompiledCodeField.itemsSource = _currentlyDisplayedDecompiledCode;
            _currentDecompilationStatus      = DecompilationStatus.Complete;
        }