RepositoryChangeEvent[] getEvents() throws InterruptedIOException {
		RepositoryHandle handle;
		synchronized (serverAdapter) {
			// Be careful with synchronization since getEvents will block
			// until an event occurs
			if (repository == null) {
				throw new InterruptedIOException();
			}
			handle = repository;
		}
		try {
			return handle.getEvents();
		}
		catch (NotConnectedException | RemoteException e) {
			// Initiate recover - dispatcher will be restarted
			recoverConnection(e);
			throw new InterruptedIOException();
		}
		catch (IOException e) {
			synchronized (serverAdapter) {
				if (!Thread.currentThread().isInterrupted()) {
					serverAdapter.verifyConnection();
					disconnect(true, true);
				}
			}
			throw new InterruptedIOException();
		}
	}
Event reader for change dispatcher.
@return
@throws IOException 
@throws InterruptedIOException if repository handle is closed
Ghidra/Framework/FileSystem/src/main/java/ghidra/framework/client/RepositoryAdapter.java