class ConnectedDevicesTask implements AsyncSupplier<List<ConnectedDevice>> {

  @NotNull
  @Override
  public ListenableFuture<List<ConnectedDevice>> get() {
    ListenableFuture<Collection<IDevice>> devices = myAndroidDebugBridge.getConnectedDevices();

    // noinspection UnstableApiUsage
    return Futures.transformAsync(devices, this::newConnectedDevices, myExecutor);
  }

    ConnectedDevicesTask(@NotNull AndroidDebugBridge androidDebugBridge,
                       boolean selectDeviceSnapshotComboBoxSnapshotsEnabled,
                       @Nullable LaunchCompatibilityChecker checker);
  @VisibleForTesting  ConnectedDevicesTask(@NotNull AndroidDebugBridge androidDebugBridge,
                       boolean selectDeviceSnapshotComboBoxSnapshotsEnabled,
                       @Nullable LaunchCompatibilityChecker checker,
                       @NotNull Executor executor,
                       @NotNull Function<IDevice, AndroidDevice> androidDeviceFactory);

}