```csharp title="C#" using Kreuzberg; var processor = new UnregisterableProcessor(); PostProcessorRegistry.Register(processor); Console.WriteLine("Processor registered"); var processors = KreuzbergLib.ListPostProcessors(); Console.WriteLine($"Active processors: {string.Join(", ", processors)}"); PostProcessorRegistry.Unregister(processor.Name); Console.WriteLine("Processor unregistered"); processors = KreuzbergLib.ListPostProcessors(); Console.WriteLine($"Active processors: {string.Join(", ", processors)}"); public class UnregisterableProcessor : IPostProcessor { public string Name => "removable-processor"; public string Version => "1.0.0"; public void Initialize() { } public void Shutdown() { } public void Process(ExtractionResult result, ExtractionConfig config) { Console.WriteLine("Processing..."); } public ProcessingStage ProcessingStage() => ProcessingStage.Middle; public bool ShouldProcess(ExtractionResult result, ExtractionConfig config) => true; public ulong EstimatedDurationMs(ExtractionResult result) => 10; public int Priority() => 50; } ```