public <T extends AbstractFetcher, C extends AbstractConfig> void createFetcher(T fetcher, C config) {
        fetchers.put(fetcher.getName(), fetcher);
        fetcherConfigs.put(fetcher.getName(), config);
        getFetcherAndLogAccess(fetcher.getName());
    }
@Test
    void createFetcher() {
        try (ExpiringFetcherStore expiringFetcherStore = new ExpiringFetcherStore(1, 5)) {
            AbstractFetcher fetcher = new AbstractFetcher() {
                @Override
                public InputStream fetch(String fetchKey, Metadata metadata, ParseContext parseContext) {
                    return null;
                }
            };
            fetcher.setName("nick");
            AbstractConfig config = new AbstractConfig() {
            };
            expiringFetcherStore.createFetcher(fetcher, config);

            Assertions.assertNotNull(expiringFetcherStore
                    .getFetchers()
                    .get(fetcher.getName()));

            Awaitility
                    .await()
                    .atMost(Duration.ofSeconds(60))
                    .until(() -> expiringFetcherStore
                            .getFetchers()
                            .get(fetcher.getName()) == null);

            assertNull(expiringFetcherStore
                    .getFetcherConfigs()
                    .get(fetcher.getName()));
        }
    }