Design and provide unit tests to cover more use cases.
}
    @Test
    public void lookupTest() throws Exception {
        
        try {
            abstractRegistry.lookup(null);
            Assert.fail();
        } catch (Exception e) {
            Assert.assertTrue(e instanceof NullPointerException);
        }
        List<URL> urlList1 = abstractRegistry.lookup(testUrl);
        Assert.assertFalse(urlList1.contains(testUrl));
        
        List<URL> urls = new ArrayList<>();
        urls.add(testUrl);
        abstractRegistry.notify(urls);
        List<URL> urlList2 = abstractRegistry.lookup(testUrl);
        Assert.assertTrue(urlList2.contains(testUrl));
    }
    @Test
    public void destroyTest() throws Exception {
        abstractRegistry.register(testUrl);
        abstractRegistry.subscribe(testUrl, listener);
        Assert.assertEquals(1, abstractRegistry.getRegistered().size());
        Assert.assertEquals(1, abstractRegistry.getSubscribed().get(testUrl).size());
        
        abstractRegistry.destroy();
        Assert.assertEquals(0, abstractRegistry.getRegistered().size());
        Assert.assertEquals(0, abstractRegistry.getSubscribed().get(testUrl).size());
    }