anchor.diff:          } catch (exception, stackTrace) {
             // Record the exception (for debugging purposes) and record the fact
             // that we should not try to communicate with the plugin.
  -          plugin.exception = CaughtException(exception, stackTrace);
  +          plugin.reportException(CaughtException(exception, stackTrace));
             isNew = false;
           }
         }
  
positive.code:   /// Request that the plugin shutdown.
    Future<void> stop() {
      if (currentSession == null) {
        throw StateError('Cannot stop a plugin that is not running.');
      }
      var doneFuture = currentSession.stop();
      currentSession = null;
  
negative.code:     if (channel == null) {
        // If there is an error when starting the isolate, the channel will invoke
        // handleOnDone, which will cause `channel` to be set to `null`.
        info.reportException(CaughtException(
            PluginException('Unrecorded error while starting the plugin.'),
            null));
        return false;
      }
      var response = await sendRequest(PluginVersionCheckParams(
  