public static @NotNull <T, H extends UserDataHolder> NotNullLazyKey<T, H> createLazyKey(@NonNls @NotNull String name,
                                                                                          @NotNull Function<? super H, ? extends @NotNull T> function) {
    return new NotNullLazyKey<>(name, function);
  }
public static @NotNull <T, H extends UserDataHolder> NotNullLazyKey<T, H> createLazyKey(@NonNls @NotNull String name,
                                                                                          @NotNull Function<? super H, ? extends @NotNull T> function)