public static @Nullable DataProvider compose(@NotNull Iterable<? extends @Nullable DataProvider> providers) {
    List<DataProvider> list = null;
    for (DataProvider provider : providers) {
      if (provider == null) continue;
      if (list == null) list = new ArrayList<>();
      if (provider instanceof CompositeDataProvider) {
        list.addAll(((CompositeDataProvider)provider).myProviders);
      }
      else {
        list.add(provider);
      }
    }
    return list == null ? null :
           list.size() == 1 ? list.get(0) :
           new CompositeDataProvider(List.copyOf(list));
  }
public static @Nullable DataProvider compose(@NotNull Iterable<? extends @Nullable DataProvider> providers)