anchor.diff:  
         // Remove stream will throw over-completion if called more than once
         // which proves this is ignored.
  -      eventStream.add(<XCDeviceEvent, String>{
  +      xcdevice.deviceEventController.add(<XCDeviceEvent, String>{
           XCDeviceEvent.detach: 'bogus'
         });
   
  
positive.code:           cpuArchitecture: DarwinArch.arm64,
            interfaceType: IOSDeviceInterface.usb,
          );
          logReader1 = createLogReader(device, appPackage1, mockProcess1);
          logReader2 = createLogReader(device, appPackage2, mockProcess2);
          portForwarder = createPortForwarder(forwardedPort, device);
          device.setLogReader(appPackage1, logReader1);
          device.setLogReader(appPackage2, logReader2);
  
negative.code:     testWithoutContext('start polling without Xcode', () async {
        final IOSDevices iosDevices = IOSDevices(
          platform: macPlatform,
          xcdevice: xcdevice,
          iosWorkflow: iosWorkflow,
          logger: logger,
        );
        xcdevice.isInstalled = false;
  
        await iosDevices.startPolling();
        expect(xcdevice.getAvailableIOSDevicesCount, 0);
      });
  
      testWithoutContext('start polling', () async {
        final IOSDevices iosDevices = IOSDevices(
          platform: macPlatform,
          xcdevice: xcdevice,
          iosWorkflow: iosWorkflow,
          logger: logger,
        );
        xcdevice.isInstalled = true;
        xcdevice.devices
          ..add(<IOSDevice>[])
          ..add(<IOSDevice>[device1, device2]);
  
        int addedCount = 0;
        final Completer<void> added = Completer<void>();
  