@Contract(pure=true)
  public static <E> boolean startsWith(E @NotNull [] array, E @NotNull [] subArray) {
    //noinspection ArrayEquality
    if (array == subArray) {
      return true;
    }
    int length = subArray.length;
    if (array.length < length) {
      return false;
    }

    for (int i = 0; i < length; i++) {
      if (!Comparing.equal(array[i], subArray[i])) {
        return false;
      }
    }

    return true;
  }
@Contract(pure=true)
  public static <E> boolean startsWith(E @NotNull [] array, E @NotNull [] subArray)