public FilesAnonymizerForJsonFormatResource(
            string configFilePath,
            string inputFolder,
            string outputFolder,
            AnonymizationToolOptions options)
        {
            _inputFolder    = inputFolder;
            _outputFolder   = outputFolder;
            _configFilePath = configFilePath;
            _options        = options;

            AnonymizerEngine.InitializeFhirPathExtensionSymbols();
        }
        internal static async Task AnonymizeAsync(Options options)
        {
            try
            {
                InitializeAnonymizerLogging(options.IsVerbose);

                if (IsSameDirectory(options.InputFolder, options.OutputFolder))
                {
                    throw new Exception("Input and output folders are the same! Please choose another folder.");
                }

                Directory.CreateDirectory(options.OutputFolder);

                string inputFolder    = options.InputFolder;
                string outputFolder   = options.OutputFolder;
                string configFilePath = options.ConfigurationFilePath;

                AnonymizationToolOptions toolOptions = new AnonymizationToolOptions()
                {
                    IsRecursive     = options.IsRecursive,
                    SkipExistedFile = options.SkipExistedFile,
                    ValidateInput   = options.ValidateInput,
                    ValidateOutput  = options.ValidateOutput
                };

                if (options.IsBulkData)
                {
                    await new FilesAnonymizerForNdJsonFormatResource(configFilePath, inputFolder, outputFolder, toolOptions).AnonymizeAsync().ConfigureAwait(false);
                }
                else
                {
                    await new FilesAnonymizerForJsonFormatResource(configFilePath, inputFolder, outputFolder, toolOptions).AnonymizeAsync().ConfigureAwait(false);
                }
                Console.WriteLine($"Finished processing '{inputFolder}'!");
            }
            finally
            {
                DisposeAnonymizerLogging();
            }
        }