anchor.diff:     */
     SendPort _sendPort;
   
  -  ReceivePort receivePort;
  -
  -  ReceivePort errorPort;
  -
  -  ReceivePort exitPort;
  +  /**
  +   * The port used to receive responses and notifications from the plugin.
  +   */
  +  ReceivePort _receivePort;
  +
  +  /**
  +   * The port used to receive unhandled exceptions thrown in the plugin.
  +   */
  +  ReceivePort _errorPort;
  +
  +  /**
  +   * The port used to receive notification when the plugin isolate has exited.
  +   */
  +  ReceivePort _exitPort;
   
     /**
      * Initialize a newly created channel to communicate with an isolate running
  
positive.code:       this.pluginUri, this.packagesUri, this.instrumentationService);
    @override
    void close() {
      receivePort?.close();
      errorPort?.close();
      exitPort?.close();
      _isolate = null;
  //    _sendPort = null;
  //    receivePort = null;
  //    errorPort = null;
  //    exitPort = null;
    }
  
    @override
  
negative.code:     if (_isolate != null) {
        throw new StateError('Cannot listen to the same channel more than once.');
      }
      _receivePort = new ReceivePort();
      if (onError != null) {
        _errorPort = new ReceivePort();
        _errorPort.listen((error) {
          onError(error);
        });
      }
      if (onDone != null) {
        _exitPort = new ReceivePort();
        _exitPort.listen((_) {
          onDone();
        });
      }
      _isolate = await Isolate.spawnUri(
          pluginUri, <String>[], _receivePort.sendPort,
          onError: _errorPort?.sendPort,
          onExit: _exitPort?.sendPort,
          packageConfig: packagesUri);
      Completer<Null> channelReady = new Completer<Null>();
      _receivePort.listen((dynamic input) {
        if (input is SendPort) {
  //        print('[server] Received send port');
          _sendPort = input;
  