/// <summary>
        /// Creates an instance of the LocationCache that has a fake logger attached for
        /// checking that code is called.
        /// Suitable for unit and integration testing.
        /// </summary>
        /// <returns></returns>
        public CacheManager Create()
        {
            DiskStoragePath = Guid.NewGuid().ToString() + ".json";
            L1Logger        = serviceProvider.GetRequiredService <FakeLogger <LocationCacheMemory> >();
            L2Logger        = serviceProvider.GetRequiredService <FakeLogger <LocationCacheDisk> >();
            Level1Cache     = new LocationCacheMemory(L1Logger);
            Level2Cache     = new LocationCacheDisk(L2Logger, DiskStoragePath);
            LocationCreator = serviceProvider.GetRequiredService <LocationCreator>();
            Logger          = serviceProvider.GetRequiredService <FakeLogger <CacheManager> >();

            return(new CacheManager(Level1Cache, Level2Cache, LocationCreator, Logger));
        }
        /// <summary>
        /// Creates an instance of <see cref="Sawyer"/> that is wired up to real I/O but the cache and geocoders are all fake I/O classes for unit testing.
        /// </summary>
        /// <returns></returns>
        public Sawyer CreateWithLocalIO(string source, string destination)
        {
            var addressQualityChecker = serviceProvider.GetRequiredService <AddressQualityChecker>();

            ReaderLogger = serviceProvider.GetRequiredService <FakeLogger <CsvTreeReader> >();
            var reader = new CsvTreeReader(source, ReaderLogger);

            WriterLogger = serviceProvider.GetRequiredService <FakeLogger <JsonTreeWriter> >();
            var writer = new JsonTreeWriter(WriterLogger, destination);

            GeocodeManager       = new FakeGeocodeManager();
            LocationCacheFactory = serviceProvider.GetRequiredService <FakeLocationCacheFactory>();
            TreeParser           = serviceProvider.GetRequiredService <TreeParser>();

            return(new Sawyer(addressQualityChecker, GeocodeManager, LocationCacheFactory, null, TreeParser, reader, writer));
        }