docs: public void addQueryInfoStateChangeListener(StateChangeListener<QueryInfo> stateChangeListener)
      {
          AtomicBoolean done = new AtomicBoolean();
          StateChangeListener<Optional<QueryInfo>> fireOnceStateChangeListener = finalQueryInfo -> {
              if (finalQueryInfo.isPresent() && done.compareAndSet(false, true)) {
                  stateChangeListener.stateChanged(finalQueryInfo.get());
              }
          };
          finalQueryInfo.addStateChangeListener(fireOnceStateChangeListener);
      }