@Contract(pure = true)
  public static <T> int indexOf(@NotNull T[] src, @Nullable T obj, int start, int end) {
    if (obj == null) {
      for (int i = start; i < end; i++) {
        if (src[i] == null) return i;
      }
    }
    else {
      for (int i = start; i < end; i++) {
        if (obj.equals(src[i])) return i;
      }
    }
    return -1;
  }
@Contract(pure = true)
  public static <T> int indexOf(@NotNull T[] src, @Nullable T obj, int start, int end)