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