code: private synchronized void submitToExecutor(final Runnable command)
      {
          if ( state.get() == State.STARTED )
          {
              executorService.submit(command);
          }
      }
docs: Submits a runnable to the executor.
  <p>
  This method is synchronized because it has to check state about whether this instance is still open.  Without this check
  there is a race condition with the dataWatchers that get set.  Even after this object is closed() it can still be
  called by those watchers, because the close() method cannot actually disable the watcher.
  <p>
  The synchronization overhead should be minimal if non-existant as this is generally only called from the
  ZK client thread and will only contend if close() is called in parallel with an update, and that's the exact state
  we want to protect from.
  
  @param command The runnable to run