anchor.diff:        }
         if (_driver != null) break;
       }
  +  }
  +
  +  /// Returns a port that is probably, but not definitely, not in use.
  +  ///
  +  /// This has a built-in race condition: another process may bind this port at
  +  /// any time after this call has returned.
  +  static Future<int> _findUnusedPort() async {
  +    int port;
  +    ServerSocket socket;
  +    try {
  +      socket = await ServerSocket.bind(InternetAddress.loopbackIPv6, 0,
  +          v6Only: true);
  +    } on SocketException {
  +      socket = await ServerSocket.bind(InternetAddress.loopbackIPv4, 0);
  +    }
  +    port = socket.port;
  +    await socket.close();
  +    return port;
     }
   
     @override
  
positive.code:   @override
    Future<bool> start(String url) async {
      _logEvent('Starting $this browser on: $url');
      if (!await startBrowserProcess(
          driverExecutable, ['--port', '$_port', ...driverArguments])) {
        return false;
      }
      await _createDriver();
      await _driver.get(url);
      try {
        _logEvent('Got version: ${await version}');
  
negative.code: }
  
  abstract class WebDriverBrowser extends Browser {
    WebDriver _driver;
  
    String get driverExecutable;
  