protected override void Handle(PluginPayload payload)
        {
            Console.WriteLine("Searching for dead links...");
            IEnumerable <String> filePaths = GetMarkdownFilePaths(payload.VaultDirectory);
            List <MarkdownFile>  files     = ReadFiles(filePaths);
            String outputPath = $"obsidiantools-output-dead-{DateTime.Now:yyyyMMdd-HHmmss}.md";

            using (StreamWriter writer = File.CreateText(outputPath))
            {
                writer.WriteLine("### Dead Links");
                writer.WriteLine("The following dead links were found:");
                foreach (MarkdownFile file in files)
                {
                    MarkdownLink fileLink = MarkdownLink.ForFile(file);
                    foreach (MarkdownLink link in file.Links)
                    {
                        String filePath = FileHelper.GetAbsoluteFileName(payload.VaultDirectory, link.FileName);
                        if (!File.Exists(filePath))
                        {
                            writer.WriteLine($" - Referenced file NOT FOUND @ {fileLink} -> {link} (`{filePath}`)");
                        }
                        else if (!FileHelper.HasContent(filePath))
                        {
                            writer.WriteLine($" - Referenced file IS EMPTY @ {fileLink} -> {link} (`{filePath}`)");
                        }
                    }
                }
            }

            Console.WriteLine("Searching for dead links done");
            Console.WriteLine($"Creating result file done, you can find it here: {outputPath}");
        }
        protected override void Handle(PluginPayload payload)
        {
            Console.WriteLine("Creating dead links...");
            IEnumerable <String> filePaths = GetMarkdownFilePaths(payload.VaultDirectory);
            List <MarkdownFile>  files     = ReadFiles(filePaths);
            List <MarkdownLink>  newLinks  = new List <MarkdownLink>();
            String outputPath = $"obsidiantools-output-created-{DateTime.Now:yyyyMMdd-HHmmss}.md";

            foreach (MarkdownFile file in files)
            {
                MarkdownLink fileLink = MarkdownLink.ForFile(file);
                foreach (MarkdownLink link in file.Links)
                {
                    String filePath = FileHelper.GetAbsoluteFileName(payload.VaultDirectory, link.FileName);
                    if (File.Exists(filePath))
                    {
                        continue;
                    }

                    File.WriteAllText(filePath
                                      , "_automatically created by [obsidian-tools](https://github.com/tobiaswuerth/obsidian-tools)_ ==#todo==");
                    MarkdownLink newLink = MarkdownLink.ForFile(link.FileName);
                    newLinks.Add(newLink);
                }
            }

            using (StreamWriter writer = File.CreateText(outputPath))
            {
                writer.WriteLine("Created the following files and tagged them with #todo");
                writer.WriteLine("### Newly Created Files");
                String references = CollectionHelper.CommaSeparatedList(newLinks.Select(n => n.ToString()));
                writer.WriteLine(references);
            }

            Console.WriteLine("Created dead links");
            Console.WriteLine($"Creating result file done, you can find it here: {outputPath}");
            Console.WriteLine(
                "Note: You might have to restart your Obsidian.md client in order to correctly index all new files");
        }