anchor.diff:     * Return the [Stream] that produces [AnalysisResult]s for added files.
      *
      * Analysis starts when the client starts listening to the stream, and stops
  -   * when the client cancels the subscription.
  +   * when the client cancels the subscription. Note that the stream supports
  +   * only one single subscriber.
      *
      * When the client starts listening, the analysis state transitions to
      * "analyzing" and an analysis result is produced for every added file prior
  
positive.code:    * The results of analysis are eventually produced by the [results] stream.
     */
    void addFile(String path) {
      _explicitFiles.add(path);
      _filesToAnalyze.add(path);
      _transitionToAnalyzing();
      _hasWork.notify();
    }
  
negative.code:    * [changeFile] invocation.
     */
    void changeFile(String path) {
      if (AnalysisEngine.isDartFileName(path)) {
        _changedFiles.add(path);
        if (_explicitFiles.contains(path)) {
          _filesToAnalyze.add(path);
        }
      }
      _transitionToAnalyzing();
      _hasWork.notify();
  