code: public synchronized void addListener(Listener<R> listener) {
          // it might be we add a listener AFTER the result is actually produced,
          // in which case we simply inform the listener immediately.
          if (isReady()) {
              if (_error != null) {
                  listener.onError(_error);
              } else {
                  listener.onSuccess(_result);
              }
              return;
          }
  
          if (_listeners == null) {
              _listeners = new LinkedList<>();
          }
          _listeners.add(listener);
      }
docs: Adds a {@link Listener} to this {@link AnalyzerResultFuture}.
  
  @param listener