public async Task The_extend_directive_can_be_used_to_load_a_kernel_extension()
        {
            var extensionDir = DirectoryUtility.CreateDirectory();

            var extensionDllPath = (await KernelExtensionTestHelper.CreateExtension(extensionDir, @"await kernel.SendAsync(new SubmitCode(""using System.Reflection;""));"))
                                   .FullName;

            var kernel = CreateKernel();

            using var events = kernel.KernelEvents.ToSubscribedList();

            var submitCode = new SubmitCode($"#extend \"{extensionDllPath}\"");
            await kernel.SendAsync(submitCode);

            events.Should()
            .ContainSingle(e => e is ExtensionLoaded &&
                           e.As <ExtensionLoaded>().ExtensionPath.FullName.Equals(extensionDllPath));

            events.Should()
            .ContainSingle(e => e is DisplayedValueProduced &&
                           e.As <DisplayedValueProduced>()
                           .Value
                           .ToString()
                           .Contains($"Loaded kernel extension TestKernelExtension from assembly {extensionDllPath}"));
        }
        public async Task Gives_kernel_extension_load_exception_event_when_extension_throws_exception_during_load()
        {
            var extensionDir = DirectoryUtility.CreateDirectory();

            var extensionDllPath = (await KernelExtensionTestHelper.CreateExtension(extensionDir, @"throw new Exception();")).FullName;

            var kernel = CreateKernel();

            using var events = kernel.KernelEvents.ToSubscribedList();

            await kernel.SendAsync(new SubmitCode($"#extend \"{extensionDllPath}\""));

            events.Should()
            .ContainSingle(e => e is KernelExtensionLoadException);
        }