private static void AssertSingleton()
        {
            var nullProcessor1 = PaymentStrategyFactory.Create("Non Existence Payment Provider111");
            var nullProcessor2 = PaymentStrategyFactory.Create("Non Existence Payment Provider222");

            Debug.Assert(nullProcessor1 == nullProcessor2);
        }
        private static void ProcessPayments()
        {
            var paymentProviders = new[] {
                "Paypal", "ApplePay", "GooglePay",
                "Braintree", "PayPal", "ApplePay",
                "ApplePay", "BadPaymentProvider"
            };

            foreach (var paymentProvider in paymentProviders)
            {
                var paymentProcessor = PaymentStrategyFactory.Create(paymentProvider);
                WriteLine($"===== Processing with '{paymentProvider}' Provider =====");

                // There is no need to check if the payment processor is null here
                // Reduced Cyclomatic Complexity.
                var paymentStatus = paymentProcessor.Process(111);
                WriteLine($"--> {paymentStatus}");
            }
        }