code: function ensureFileDetectorsAreEnabled(ctor) {
    const mixin = class extends ctor {
      /** @param {input.FileDetector} detector */
      setFileDetector(detector) {
        webdriver.WebDriver.prototype.setFileDetector.call(this, detector);
      }
    };
    return mixin;
  }
docs: {@linkplain webdriver.WebDriver#setFileDetector WebDriver's setFileDetector}
  method uses a non-standard command to transfer files from the local client
  to the remote end hosting the browser. Many of the WebDriver sub-types, like
  the {@link chrome.Driver} and {@link firefox.Driver}, do not support this
  command. Thus, these classes override the `setFileDetector` to no-op.
  
  This function uses a mixin to re-enable `setFileDetector` by calling the
  original method on the WebDriver prototype directly. This is used only when
  the builder creates a Chrome or Firefox instance that communicates with a
  remote end (and thus, support for remote file detectors is unknown).
  
  @param {function(new: webdriver.WebDriver, ...?)} ctor
  @return {function(new: webdriver.WebDriver, ...?)}