Design and provide unit tests to cover more use cases.
final AtomicReference<Boolean> notified = new AtomicReference<Boolean>(false);
        NotifyListener listener = urls -> notified.set(Boolean.TRUE);
        URL url = new URL("dubbo", "192.168.0.1", 2200);
        abstractRegistry.subscribe(null, listener);
        Assert.fail("subscribe url == null");
    }
    @Test(expected = IllegalArgumentException.class)
    public void testSubscribeIfListenerNull() throws Exception {
        final AtomicReference<Boolean> notified = new AtomicReference<Boolean>(false);
        NotifyListener listener = urls -> notified.set(Boolean.TRUE);
        URL url = new URL("dubbo", "192.168.0.1", 2200);
        abstractRegistry.subscribe(url, null);
        Assert.fail("listener url == null");
    }
    @Test(expected = IllegalArgumentException.class)
    public void testUnsubscribeIfUrlNull() throws Exception {
        final AtomicReference<Boolean> notified = new AtomicReference<Boolean>(false);
        NotifyListener listener = urls -> notified.set(Boolean.TRUE);
        abstractRegistry.unsubscribe(null, listener);
        Assert.fail("unsubscribe url == null");
    }
    @Test(expected = IllegalArgumentException.class)
    public void testUnsubscribeIfNotifyNull() throws Exception {
        final AtomicReference<Boolean> notified = new AtomicReference<Boolean>(false);
        URL url = new URL("dubbo", "192.168.0.1", 2200);
        abstractRegistry.unsubscribe(url, null);
        Assert.fail("unsubscribe listener == null");
    }
    /**
     * Test method for