@Contract(pure=true)
  public static <T> T @NotNull [] prepend(T element, T @NotNull [] array) {
    return prepend(element, array, getComponentType(array));
  }
@Contract(pure=true)
  public static <T> T @NotNull [] prepend(T element, T @NotNull [] array)