content: package kotlin.collections;
  
  import java.util.ArrayList;
  import java.util.Collection;
  import java.util.Comparator;
  import java.util.List;
  import kotlin.Metadata;
  import kotlin.Unit;
  import kotlin.comparisons.ComparisonsKt;
  import kotlin.jvm.functions.Function0;
  import kotlin.jvm.functions.Function1;
  import kotlin.jvm.internal.Intrinsics;
  import kotlin.random.Random;
  import kotlin.ranges.IntRange;
  
  @Metadata(d1 = {"\u0000\u0001\n\u0000\n\u0002\u0018\u0002\n\u0002\u0010\u001e\n\u0002\b\u0003\n\u0002\u0010\b\n\u0000\n\u0002\u0010 \n\u0002\b\u0005\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\b\u0003\n\u0002\u0010!\n\u0000\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010\u0011\n\u0002\b\u0005\n\u0002\u0010\u0002\n\u0002\u0018\u0002\n\u0002\b\u0004\n\u0002\u0010\u0000\n\u0002\b\r\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0010\u000f\n\u0002\b\u0007\n\u0002\u0010\u000b\n\u0002\u0018\u0002\n\u0002\b\u0004\n\u0002\u0018\u0002\n\u0002\b\u0006\n\u0002\u0010\u001c\n\u0000\n\u0002\u0018\u0002\n\u0000\u001aC\u0010\u000b\u001a\b\u0012\u0004\u0012\u0002H\u00070\b\"\u0004\b\u0000\u0010\u00072\u0006\u0010\f\u001a\u00020\u00062!\u0010\r\u001a\u001d\u0012\u0013\u0012\u00110\u0006¢\u0006\f\b\u000f\u0012\b\b\u0010\u0012\u0004\b\b(\u0011\u0012\u0004\u0012\u0002H\u00070\u000eH\bø\u0001\u0000\u001aC\u0010\u0012\u001a\b\u0012\u0004\u0012\u0002H\u00070\u0013\"\u0004\b\u0000\u0010\u00072\u0006\u0010\f\u001a\u00020\u00062!\u0010\r\u001a\u001d\u0012\u0013\u0012\u00110\u0006¢\u0006\f\b\u000f\u0012\b\b\u0010\u0012\u0004\b\b(\u0011\u0012\u0004\u0012\u0002H\u00070\u000eH\bø\u0001\u0000\u001a\u001f\u0010\u0014\u001a\u0012\u0012\u0004\u0012\u0002H\u00070\u0015j\b\u0012\u0004\u0012\u0002H\u0007`\u0016\"\u0004\b\u0000\u0010\u0007H\b\u001a5\u0010\u0014\u001a\u0012\u0012\u0004\u0012\u0002H\u00070\u0015j\b\u0012\u0004\u0012\u0002H\u0007`\u0016\"\u0004\b\u0000\u0010\u00072\u0012\u0010\u0017\u001a\n\u0012\u0006\b\u0001\u0012\u0002H\u00070\u0018\"\u0002H\u0007¢\u0006\u0002\u0010\u0019\u001aN\u0010\u001a\u001a\b\u0012\u0004\u0012\u0002H\u001b0\b\"\u0004\b\u0000\u0010\u001b2\u0006\u0010\u001c\u001a\u00020\u00062\u001f\b\u0001\u0010\u001d\u001a\u0019\u0012\n\u0012\b\u0012\u0004\u0012\u0002H\u001b0\u0013\u0012\u0004\u0012\u00020\u001e0\u000e¢\u0006\u0002\b\u001fH\bø\u0001\u0000\u0002\n\n\b\b\u0001\u0012\u0002\u0010\u0002 \u0001\u001aF\u0010\u001a\u001a\b\u0012\u0004\u0012\u0002H\u001b0\b\"\u0004\b\u0000\u0010\u001b2\u001f\b\u0001\u0010\u001d\u001a\u0019\u0012\n\u0012\b\u0012\u0004\u0012\u0002H\u001b0\u0013\u0012\u0004\u0012\u00020\u001e0\u000e¢\u0006\u0002\b\u001fH\bø\u0001\u0000\u0002\n\n\b\b\u0001\u0012\u0002\u0010\u0001 \u0001\u001a\u0012\u0010 \u001a\b\u0012\u0004\u0012\u0002H\u00070\b\"\u0004\b\u0000\u0010\u0007\u001a\u0015\u0010!\u001a\b\u0012\u0004\u0012\u0002H\u00070\b\"\u0004\b\u0000\u0010\u0007H\b\u001a+\u0010!\u001a\b\u0012\u0004\u0012\u0002H\u00070\b\"\u0004\b\u0000\u0010\u00072\u0012\u0010\u0017\u001a\n\u0012\u0006\b\u0001\u0012\u0002H\u00070\u0018\"\u0002H\u0007¢\u0006\u0002\u0010\"\u001a%\u0010#\u001a\b\u0012\u0004\u0012\u0002H\u00070\b\"\b\b\u0000\u0010\u0007*\u00020$2\b\u0010%\u001a\u0004\u0018\u0001H\u0007¢\u0006\u0002\u0010&\u001a3\u0010#\u001a\b\u0012\u0004\u0012\u0002H\u00070\b\"\b\b\u0000\u0010\u0007*\u00020$2\u0016\u0010\u0017\u001a\f\u0012\b\b\u0001\u0012\u0004\u0018\u0001H\u00070\u0018\"\u0004\u0018\u0001H\u0007¢\u0006\u0002\u0010\"\u001a\u0015\u0010'\u001a\b\u0012\u0004\u0012\u0002H\u00070\u0013\"\u0004\b\u0000\u0010\u0007H\b\u001a+\u0010'\u001a\b\u0012\u0004\u0012\u0002H\u00070\u0013\"\u0004\b\u0000\u0010\u00072\u0012\u0010\u0017\u001a\n\u0012\u0006\b\u0001\u0012\u0002H\u00070\u0018\"\u0002H\u0007¢\u0006\u0002\u0010\"\u001a%\u0010(\u001a\u00020\u001e2\u0006\u0010\f\u001a\u00020\u00062\u0006\u0010)\u001a\u00020\u00062\u0006\u0010*\u001a\u00020\u0006H\u0002¢\u0006\u0002\b+\u001a\b\u0010,\u001a\u00020\u001eH\u0001\u001a\b\u0010-\u001a\u00020\u001eH\u0001\u001a%\u0010.\u001a\b\u0012\u0004\u0012\u0002H\u00070\u0002\"\u0004\b\u0000\u0010\u0007*\n\u0012\u0006\b\u0001\u0012\u0002H\u00070\u0018H\u0000¢\u0006\u0002\u0010/\u001aS\u00100\u001a\u00020\u0006\"\u0004\b\u0000\u0010\u0007*\b\u0012\u0004\u0012\u0002H\u00070\b2\u0006\u0010%\u001a\u0002H\u00072\u001a\u00101\u001a\u0016\u0012\u0006\b\u0000\u0012\u0002H\u000702j\n\u0012\u0006\b\u0000\u0012\u0002H\u0007`32\b\b\u0002\u0010)\u001a\u00020\u00062\b\b\u0002\u0010*\u001a\u00020\u0006¢\u0006\u0002\u00104\u001a>\u00100\u001a\u00020\u0006\"\u0004\b\u0000\u0010\u0007*\b\u0012\u0004\u0012\u0002H\u00070\b2\b\b\u0002\u0010)\u001a\u00020\u00062\b\b\u0002\u0010*\u001a\u00020\u00062\u0012\u00105\u001a\u000e\u0012\u0004\u0012\u0002H\u0007\u0012\u0004\u0012\u00020\u00060\u000e\u001aE\u00100\u001a\u00020\u0006\"\u000e\b\u0000\u0010\u0007*\b\u0012\u0004\u0012\u0002H\u000706*\n\u0012\u0006\u0012\u0004\u0018\u0001H\u00070\b2\b\u0010%\u001a\u0004\u0018\u0001H\u00072\b\b\u0002\u0010)\u001a\u00020\u00062\b\b\u0002\u0010*\u001a\u00020\u0006¢\u0006\u0002\u00107\u001ag\u00108\u001a\u00020\u0006\"\u0004\b\u0000\u0010\u0007\"\u000e\b\u0001\u00109*\b\u0012\u0004\u0012\u0002H906*\b\u0012\u0004\u0012\u0002H\u00070\b2\b\u0010:\u001a\u0004\u0018\u0001H92\b\b\u0002\u0010)\u001a\u00020\u00062\b\b\u0002\u0010*\u001a\u00020\u00062\u0016\b\u0004\u0010;\u001a\u0010\u0012\u0004\u0012\u0002H\u0007\u0012\u0006\u0012\u0004\u0018\u0001H90\u000eH\bø\u0001\u0000¢\u0006\u0002\u0010<\u001a,\u0010=\u001a\u00020>\"\t\b\u0000\u0010\u0007¢\u0006\u0002\b?*\b\u0012\u0004\u0012\u0002H\u00070\u00022\f\u0010\u0017\u001a\b\u0012\u0004\u0012\u0002H\u00070\u0002H\b\u001a;\u0010@\u001a\u0002HA\"\u0010\b\u0000\u0010B*\u0006\u0012\u0002\b\u00030\u0002*\u0002HA\"\u0004\b\u0001\u0010A*\u0002HB2\f\u0010C\u001a\b\u0012\u0004\u0012\u0002HA0DH\bø\u0001\u0000¢\u0006\u0002\u0010E\u001a\u0019\u0010F\u001a\u00020>\"\u0004\b\u0000\u0010\u0007*\b\u0012\u0004\u0012\u0002H\u00070\u0002H\b\u001a,\u0010G\u001a\u00020>\"\u0004\b\u0000\u0010\u0007*\n\u0012\u0004\u0012\u0002H\u0007\u0018\u00010\u0002H\b\u0002\u000e\n\f\b\u0000\u0012\u0002\u0018\u0001\u001a\u0004\b\u0003\u0010\u0000\u001a\u001e\u0010H\u001a\b\u0012\u0004\u0012\u0002H\u00070\b\"\u0004\b\u0000\u0010\u0007*\b\u0012\u0004\u0012\u0002H\u00070\bH\u0000\u001a!\u0010I\u001a\b\u0012\u0004\u0012\u0002H\u00070\u0002\"\u0004\b\u0000\u0010\u0007*\n\u0012\u0004\u0012\u0002H\u0007\u0018\u00010\u0002H\b\u001a!\u0010I\u001a\b\u0012\u0004\u0012\u0002H\u00070\b\"\u0004\b\u0000\u0010\u0007*\n\u0012\u0004\u0012\u0002H\u0007\u0018\u00010\bH\b\u001a&\u0010J\u001a\b\u0012\u0004\u0012\u0002H\u00070\b\"\u0004\b\u0000\u0010\u0007*\b\u0012\u0004\u0012\u0002H\u00070K2\u0006\u0010L\u001a\u00020MH\u0007\"\u0019\u0010\u0000\u001a\u00020\u0001*\u0006\u0012\u0002\b\u00030\u00028F¢\u0006\u0006\u001a\u0004\b\u0003\u0010\u0004\"!\u0010\u0005\u001a\u00020\u0006\"\u0004\b\u0000\u0010\u0007*\b\u0012\u0004\u0012\u0002H\u00070\b8F¢\u0006\u0006\u001a\u0004\b\t\u0010\n\u0002\u0007\n\u0005\b20\u0001¨\u0006N"}, d2 = {"indices", "Lkotlin/ranges/IntRange;", "", "getIndices", "(Ljava/util/Collection;)Lkotlin/ranges/IntRange;", "lastIndex", "", "T", "", "getLastIndex", "(Ljava/util/List;)I", "List", "size", "init", "Lkotlin/Function1;", "Lkotlin/ParameterName;", "name", "index", "MutableList", "", "arrayListOf", "Ljava/util/ArrayList;", "Lkotlin/collections/ArrayList;", "elements", "", "([Ljava/lang/Object;)Ljava/util/ArrayList;", "buildList", "E", "capacity", "builderAction", "", "Lkotlin/ExtensionFunctionType;", "emptyList", "listOf", "([Ljava/lang/Object;)Ljava/util/List;", "listOfNotNull", "", "element", "(Ljava/lang/Object;)Ljava/util/List;", "mutableListOf", "rangeCheck", "fromIndex", "toIndex", "rangeCheck$CollectionsKt__CollectionsKt", "throwCountOverflow", "throwIndexOverflow", "asCollection", "([Ljava/lang/Object;)Ljava/util/Collection;", "binarySearch", "comparator", "Ljava/util/Comparator;", "Lkotlin/Comparator;", "(Ljava/util/List;Ljava/lang/Object;Ljava/util/Comparator;II)I", "comparison", "", "(Ljava/util/List;Ljava/lang/Comparable;II)I", "binarySearchBy", "K", "key", "selector", "(Ljava/util/List;Ljava/lang/Comparable;IILkotlin/jvm/functions/Function1;)I", "containsAll", "", "Lkotlin/internal/OnlyInputTypes;", "ifEmpty", "R", "C", "defaultValue", "Lkotlin/Function0;", "(Ljava/util/Collection;Lkotlin/jvm/functions/Function0;)Ljava/lang/Object;", "isNotEmpty", "isNullOrEmpty", "optimizeReadOnlyList", "orEmpty", "shuffled", "", "random", "Lkotlin/random/Random;", "kotlin-stdlib"}, k = 5, mv = {1, 7, 1}, xi = 49, xs = "kotlin/collections/CollectionsKt")
  /* compiled from: Collections.kt */
  class CollectionsKt__CollectionsKt extends CollectionsKt__CollectionsJVMKt {
      private static final <T> List<T> List(int size, Function1<? super Integer, ? extends T> init) {
          Intrinsics.checkNotNullParameter(init, "init");
          ArrayList arrayList = new ArrayList(size);
          for (int i = 0; i < size; i++) {
              arrayList.add(init.invoke(Integer.valueOf(i)));
          }
          return arrayList;
      }
  
      private static final <T> List<T> MutableList(int size, Function1<? super Integer, ? extends T> init) {
          Intrinsics.checkNotNullParameter(init, "init");
          ArrayList arrayList = new ArrayList(size);
          for (int i = 0; i < size; i++) {
              arrayList.add(init.invoke(Integer.valueOf(i)));
          }
          return arrayList;
      }
  
      private static final <T> ArrayList<T> arrayListOf() {
          return new ArrayList<>();
      }
  
      public static final <T> ArrayList<T> arrayListOf(T... elements) {
          Intrinsics.checkNotNullParameter(elements, "elements");
          return elements.length == 0 ? new ArrayList<>() : new ArrayList<>(new ArrayAsCollection(elements, true));
      }
  
      public static final <T> Collection<T> asCollection(T[] $this$asCollection) {
          Intrinsics.checkNotNullParameter($this$asCollection, "<this>");
          return new ArrayAsCollection<>($this$asCollection, false);
      }
  
      public static final <T> int binarySearch(List<? extends T> $this$binarySearch, int fromIndex, int toIndex, Function1<? super T, Integer> comparison) {
          Intrinsics.checkNotNullParameter($this$binarySearch, "<this>");
          Intrinsics.checkNotNullParameter(comparison, "comparison");
          rangeCheck$CollectionsKt__CollectionsKt($this$binarySearch.size(), fromIndex, toIndex);
          int i = fromIndex;
          int i2 = toIndex - 1;
          while (i <= i2) {
              int i3 = (i + i2) >>> 1;
              int intValue = comparison.invoke($this$binarySearch.get(i3)).intValue();
              if (intValue < 0) {
                  i = i3 + 1;
              } else if (intValue <= 0) {
                  return i3;
              } else {
                  i2 = i3 - 1;
              }
          }
          return -(i + 1);
      }
  
      public static final <T extends Comparable<? super T>> int binarySearch(List<? extends T> $this$binarySearch, T element, int fromIndex, int toIndex) {
          Intrinsics.checkNotNullParameter($this$binarySearch, "<this>");
          rangeCheck$CollectionsKt__CollectionsKt($this$binarySearch.size(), fromIndex, toIndex);
          int i = fromIndex;
          int i2 = toIndex - 1;
          while (i <= i2) {
              int i3 = (i + i2) >>> 1;
              int compareValues = ComparisonsKt.compareValues((Comparable) $this$binarySearch.get(i3), element);
              if (compareValues < 0) {
                  i = i3 + 1;
              } else if (compareValues <= 0) {
                  return i3;
              } else {
                  i2 = i3 - 1;
              }
          }
          return -(i + 1);
      }
  
      public static final <T> int binarySearch(List<? extends T> $this$binarySearch, T element, Comparator<? super T> comparator, int fromIndex, int toIndex) {
          Intrinsics.checkNotNullParameter($this$binarySearch, "<this>");
          Intrinsics.checkNotNullParameter(comparator, "comparator");
          rangeCheck$CollectionsKt__CollectionsKt($this$binarySearch.size(), fromIndex, toIndex);
          int i = fromIndex;
          int i2 = toIndex - 1;
          while (i <= i2) {
              int i3 = (i + i2) >>> 1;
              int compare = comparator.compare($this$binarySearch.get(i3), element);
              if (compare < 0) {
                  i = i3 + 1;
              } else if (compare <= 0) {
                  return i3;
              } else {
                  i2 = i3 - 1;
              }
          }
          return -(i + 1);
      }
  
      public static /* synthetic */ int binarySearch$default(List list, int i, int i2, Function1 function1, int i3, Object obj) {
          if ((i3 & 1) != 0) {
              i = 0;
          }
          if ((i3 & 2) != 0) {
              i2 = list.size();
          }
          return CollectionsKt.binarySearch(list, i, i2, function1);
      }
  
      public static /* synthetic */ int binarySearch$default(List list, Comparable comparable, int i, int i2, int i3, Object obj) {
          if ((i3 & 2) != 0) {
              i = 0;
          }
          if ((i3 & 4) != 0) {
              i2 = list.size();
          }
          return CollectionsKt.binarySearch(list, comparable, i, i2);
      }
  
      public static /* synthetic */ int binarySearch$default(List list, Object obj, Comparator comparator, int i, int i2, int i3, Object obj2) {
          if ((i3 & 4) != 0) {
              i = 0;
          }
          if ((i3 & 8) != 0) {
              i2 = list.size();
          }
          return CollectionsKt.binarySearch(list, obj, comparator, i, i2);
      }
  
      public static final <T, K extends Comparable<? super K>> int binarySearchBy(List<? extends T> $this$binarySearchBy, K key, int fromIndex, int toIndex, Function1<? super T, ? extends K> selector) {
          Intrinsics.checkNotNullParameter($this$binarySearchBy, "<this>");
          Intrinsics.checkNotNullParameter(selector, "selector");
          return CollectionsKt.binarySearch($this$binarySearchBy, fromIndex, toIndex, new CollectionsKt__CollectionsKt$binarySearchBy$1(selector, key));
      }
  
      public static /* synthetic */ int binarySearchBy$default(List $this$binarySearchBy_u24default, Comparable key, int fromIndex, int toIndex, Function1 selector, int i, Object obj) {
          if ((i & 2) != 0) {
              fromIndex = 0;
          }
          if ((i & 4) != 0) {
              toIndex = $this$binarySearchBy_u24default.size();
          }
          return CollectionsKt.binarySearch($this$binarySearchBy_u24default, fromIndex, toIndex, new CollectionsKt__CollectionsKt$binarySearchBy$1(selector, key));
      }
  
      private static final <E> List<E> buildList(int capacity, Function1<? super List<E>, Unit> builderAction) {
          Intrinsics.checkNotNullParameter(builderAction, "builderAction");
          List createListBuilder = CollectionsKt.createListBuilder(capacity);
          builderAction.invoke(createListBuilder);
          return CollectionsKt.build(createListBuilder);
      }
  
      private static final <E> List<E> buildList(Function1<? super List<E>, Unit> builderAction) {
          Intrinsics.checkNotNullParameter(builderAction, "builderAction");
          List createListBuilder = CollectionsKt.createListBuilder();
          builderAction.invoke(createListBuilder);
          return CollectionsKt.build(createListBuilder);
      }
  
      private static final <T> boolean containsAll(Collection<? extends T> $this$containsAll, Collection<? extends T> elements) {
          Intrinsics.checkNotNullParameter($this$containsAll, "<this>");
          Intrinsics.checkNotNullParameter(elements, "elements");
          return $this$containsAll.containsAll(elements);
      }
  
      public static final <T> List<T> emptyList() {
          return EmptyList.INSTANCE;
      }
  
      public static final IntRange getIndices(Collection<?> $this$indices) {
          Intrinsics.checkNotNullParameter($this$indices, "<this>");
          return new IntRange(0, $this$indices.size() - 1);
      }
  
      public static final <T> int getLastIndex(List<? extends T> $this$lastIndex) {
          Intrinsics.checkNotNullParameter($this$lastIndex, "<this>");
          return $this$lastIndex.size() - 1;
      }
  
      private static final <C extends Collection<?> & R, R> R ifEmpty(C $this$ifEmpty, Function0<? extends R> defaultValue) {
          Intrinsics.checkNotNullParameter(defaultValue, "defaultValue");
          return $this$ifEmpty.isEmpty() ? defaultValue.invoke() : $this$ifEmpty;
      }
  
      private static final <T> boolean isNotEmpty(Collection<? extends T> $this$isNotEmpty) {
          Intrinsics.checkNotNullParameter($this$isNotEmpty, "<this>");
          return !$this$isNotEmpty.isEmpty();
      }
  
      private static final <T> boolean isNullOrEmpty(Collection<? extends T> $this$isNullOrEmpty) {
          return $this$isNullOrEmpty == null || $this$isNullOrEmpty.isEmpty();
      }
  
      private static final <T> List<T> listOf() {
          return CollectionsKt.emptyList();
      }
  
      public static final <T> List<T> listOf(T... elements) {
          Intrinsics.checkNotNullParameter(elements, "elements");
          return elements.length > 0 ? ArraysKt.asList(elements) : CollectionsKt.emptyList();
      }
  
      public static final <T> List<T> listOfNotNull(T element) {
          return element != null ? CollectionsKt.listOf(element) : CollectionsKt.emptyList();
      }
  
      public static final <T> List<T> listOfNotNull(T... elements) {
          Intrinsics.checkNotNullParameter(elements, "elements");
          return ArraysKt.filterNotNull(elements);
      }
  
      private static final <T> List<T> mutableListOf() {
          return new ArrayList<>();
      }
  
      public static final <T> List<T> mutableListOf(T... elements) {
          Intrinsics.checkNotNullParameter(elements, "elements");
          return elements.length == 0 ? new ArrayList() : new ArrayList(new ArrayAsCollection(elements, true));
      }
  
      public static final <T> List<T> optimizeReadOnlyList(List<? extends T> $this$optimizeReadOnlyList) {
          Intrinsics.checkNotNullParameter($this$optimizeReadOnlyList, "<this>");
          switch ($this$optimizeReadOnlyList.size()) {
              case 0:
                  return CollectionsKt.emptyList();
              case 1:
                  return CollectionsKt.listOf($this$optimizeReadOnlyList.get(0));
              default:
                  return $this$optimizeReadOnlyList;
          }
      }
  
      private static final <T> Collection<T> orEmpty(Collection<? extends T> $this$orEmpty) {
          return $this$orEmpty == null ? CollectionsKt.emptyList() : $this$orEmpty;
      }
  
      private static final <T> List<T> orEmpty(List<? extends T> $this$orEmpty) {
          return $this$orEmpty == null ? CollectionsKt.emptyList() : $this$orEmpty;
      }
  
      private static final void rangeCheck$CollectionsKt__CollectionsKt(int size, int fromIndex, int toIndex) {
          if (fromIndex > toIndex) {
              throw new IllegalArgumentException("fromIndex (" + fromIndex + ") is greater than toIndex (" + toIndex + ").");
          } else if (fromIndex < 0) {
              throw new IndexOutOfBoundsException("fromIndex (" + fromIndex + ") is less than zero.");
          } else if (toIndex > size) {
              throw new IndexOutOfBoundsException("toIndex (" + toIndex + ") is greater than size (" + size + ").");
          }
      }
  
      public static final <T> List<T> shuffled(Iterable<? extends T> $this$shuffled, Random random) {
          Intrinsics.checkNotNullParameter($this$shuffled, "<this>");
          Intrinsics.checkNotNullParameter(random, "random");
          List<T> mutableList = CollectionsKt.toMutableList($this$shuffled);
          CollectionsKt.shuffle(mutableList, random);
          return mutableList;
      }
  
      public static final void throwCountOverflow() {
          throw new ArithmeticException("Count overflow has happened.");
      }
  
      public static final void throwIndexOverflow() {
          throw new ArithmeticException("Index overflow has happened.");
      }
  }
  