@Override public <I> I decorate(I subject) { if (listener == null) { listener = new RepositoryListener() { @Override public void opened(Repository repo) { service.startAsync().awaitRunning(); } @Override public void closed() { service.stopAsync(); } }; ((Repository) subject).addListener(listener); } return subject; }