content: /*
   * Decompiled with CFR 0.153-SNAPSHOT (d6f6758-dirty).
   */
  package kotlin.collections;
  
  import java.util.Collection;
  import java.util.Iterator;
  import java.util.List;
  import java.util.ListIterator;
  import java.util.NoSuchElementException;
  import java.util.RandomAccess;
  import kotlin.Metadata;
  import kotlin.SinceKotlin;
  import kotlin.collections.AbstractCollection;
  import kotlin.jvm.internal.DefaultConstructorMarker;
  import kotlin.jvm.internal.Intrinsics;
  import kotlin.jvm.internal.markers.KMappedMarker;
  import org.jetbrains.annotations.NotNull;
  import org.jetbrains.annotations.Nullable;
  
  @Metadata(mv={1, 4, 0}, bv={1, 0, 3}, k=1, d1={"\u00008\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\u0010 \n\u0002\b\u0002\n\u0002\u0010\b\n\u0002\b\u0003\n\u0002\u0010\u000b\n\u0000\n\u0002\u0010\u0000\n\u0002\b\b\n\u0002\u0010(\n\u0002\b\u0002\n\u0002\u0010*\n\u0002\b\b\b'\u0018\u0000 \u001c*\u0006\b\u0000\u0010\u0001 \u00012\b\u0012\u0004\u0012\u0002H\u00010\u00022\b\u0012\u0004\u0012\u0002H\u00010\u0003:\u0004\u001c\u001d\u001e\u001fB\u0007\b\u0004\u00a2\u0006\u0002\u0010\u0004J\u0013\u0010\t\u001a\u00020\n2\b\u0010\u000b\u001a\u0004\u0018\u00010\fH\u0096\u0002J\u0016\u0010\r\u001a\u00028\u00002\u0006\u0010\u000e\u001a\u00020\u0006H\u00a6\u0002\u00a2\u0006\u0002\u0010\u000fJ\b\u0010\u0010\u001a\u00020\u0006H\u0016J\u0015\u0010\u0011\u001a\u00020\u00062\u0006\u0010\u0012\u001a\u00028\u0000H\u0016\u00a2\u0006\u0002\u0010\u0013J\u000f\u0010\u0014\u001a\b\u0012\u0004\u0012\u00028\u00000\u0015H\u0096\u0002J\u0015\u0010\u0016\u001a\u00020\u00062\u0006\u0010\u0012\u001a\u00028\u0000H\u0016\u00a2\u0006\u0002\u0010\u0013J\u000e\u0010\u0017\u001a\b\u0012\u0004\u0012\u00028\u00000\u0018H\u0016J\u0016\u0010\u0017\u001a\b\u0012\u0004\u0012\u00028\u00000\u00182\u0006\u0010\u000e\u001a\u00020\u0006H\u0016J\u001e\u0010\u0019\u001a\b\u0012\u0004\u0012\u00028\u00000\u00032\u0006\u0010\u001a\u001a\u00020\u00062\u0006\u0010\u001b\u001a\u00020\u0006H\u0016R\u0012\u0010\u0005\u001a\u00020\u0006X\u00a6\u0004\u00a2\u0006\u0006\u001a\u0004\b\u0007\u0010\b\u00a8\u0006 "}, d2={"Lkotlin/collections/AbstractList;", "E", "Lkotlin/collections/AbstractCollection;", "", "()V", "size", "", "getSize", "()I", "equals", "", "other", "", "get", "index", "(I)Ljava/lang/Object;", "hashCode", "indexOf", "element", "(Ljava/lang/Object;)I", "iterator", "", "lastIndexOf", "listIterator", "", "subList", "fromIndex", "toIndex", "Companion", "IteratorImpl", "ListIteratorImpl", "SubList", "kotlin-stdlib"})
  @SinceKotlin(version="1.1")
  public abstract class AbstractList<E>
  extends AbstractCollection<E>
  implements List<E>,
  KMappedMarker {
      public static final Companion Companion = new Companion(null);
  
      @Override
      public abstract int getSize();
  
      @Override
      public abstract E get(int var1);
  
      @Override
      @NotNull
      public Iterator<E> iterator() {
          return new IteratorImpl();
      }
  
      @Override
      public int indexOf(Object element) {
          int n;
          block2: {
              AbstractList $this$indexOfFirst$iv = this;
              boolean $i$f$indexOfFirst = false;
              int index$iv = 0;
              Iterator iterator2 = $this$indexOfFirst$iv.iterator();
              while (iterator2.hasNext()) {
                  Object item$iv;
                  Object it = item$iv = iterator2.next();
                  boolean bl = false;
                  if (Intrinsics.areEqual(it, element)) {
                      n = index$iv;
                      break block2;
                  }
                  ++index$iv;
              }
              n = -1;
          }
          return n;
      }
  
      @Override
      public int lastIndexOf(Object element) {
          int n;
          block1: {
              AbstractList $this$indexOfLast$iv = this;
              boolean $i$f$indexOfLast = false;
              ListIterator iterator$iv = $this$indexOfLast$iv.listIterator($this$indexOfLast$iv.size());
              while (iterator$iv.hasPrevious()) {
                  Object it = iterator$iv.previous();
                  boolean bl = false;
                  if (!Intrinsics.areEqual(it, element)) continue;
                  n = iterator$iv.nextIndex();
                  break block1;
              }
              n = -1;
          }
          return n;
      }
  
      @Override
      @NotNull
      public ListIterator<E> listIterator() {
          return new ListIteratorImpl(0);
      }
  
      @Override
      @NotNull
      public ListIterator<E> listIterator(int index) {
          return new ListIteratorImpl(index);
      }
  
      @Override
      @NotNull
      public List<E> subList(int fromIndex, int toIndex) {
          return new SubList(this, fromIndex, toIndex);
      }
  
      @Override
      public boolean equals(@Nullable Object other) {
          if (other == this) {
              return true;
          }
          if (!(other instanceof List)) {
              return false;
          }
          return Companion.orderedEquals$kotlin_stdlib(this, (Collection)other);
      }
  
      @Override
      public int hashCode() {
          return Companion.orderedHashCode$kotlin_stdlib(this);
      }
  
      protected AbstractList() {
      }
  
      @Override
      public void add(int n, E e) {
          throw new UnsupportedOperationException("Operation is not supported for read-only collection");
      }
  
      @Override
      public boolean addAll(int n, Collection<? extends E> collection) {
          throw new UnsupportedOperationException("Operation is not supported for read-only collection");
      }
  
      @Override
      public E remove(int n) {
          throw new UnsupportedOperationException("Operation is not supported for read-only collection");
      }
  
      @Override
      public E set(int n, E e) {
          throw new UnsupportedOperationException("Operation is not supported for read-only collection");
      }
  
      @Metadata(mv={1, 4, 0}, bv={1, 0, 3}, k=1, d1={"\u0000\u001e\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0010\b\n\u0002\b\n\b\u0002\u0018\u0000*\u0006\b\u0001\u0010\u0001 \u00012\b\u0012\u0004\u0012\u0002H\u00010\u00022\u00060\u0003j\u0002`\u0004B#\u0012\f\u0010\u0005\u001a\b\u0012\u0004\u0012\u00028\u00010\u0002\u0012\u0006\u0010\u0006\u001a\u00020\u0007\u0012\u0006\u0010\b\u001a\u00020\u0007\u00a2\u0006\u0002\u0010\tJ\u0016\u0010\u000e\u001a\u00028\u00012\u0006\u0010\u000f\u001a\u00020\u0007H\u0096\u0002\u00a2\u0006\u0002\u0010\u0010R\u000e\u0010\n\u001a\u00020\u0007X\u0082\u000e\u00a2\u0006\u0002\n\u0000R\u000e\u0010\u0006\u001a\u00020\u0007X\u0082\u0004\u00a2\u0006\u0002\n\u0000R\u0014\u0010\u0005\u001a\b\u0012\u0004\u0012\u00028\u00010\u0002X\u0082\u0004\u00a2\u0006\u0002\n\u0000R\u0014\u0010\u000b\u001a\u00020\u00078VX\u0096\u0004\u00a2\u0006\u0006\u001a\u0004\b\f\u0010\r\u00a8\u0006\u0011"}, d2={"Lkotlin/collections/AbstractList$SubList;", "E", "Lkotlin/collections/AbstractList;", "Ljava/util/RandomAccess;", "Lkotlin/collections/RandomAccess;", "list", "fromIndex", "", "toIndex", "(Lkotlin/collections/AbstractList;II)V", "_size", "size", "getSize", "()I", "get", "index", "(I)Ljava/lang/Object;", "kotlin-stdlib"})
      private static final class SubList<E>
      extends AbstractList<E>
      implements RandomAccess {
          private int _size;
          private final AbstractList<E> list;
          private final int fromIndex;
  
          @Override
          public E get(int index) {
              Companion.checkElementIndex$kotlin_stdlib(index, this._size);
              return this.list.get(this.fromIndex + index);
          }
  
          @Override
          public int getSize() {
              return this._size;
          }
  
          public SubList(@NotNull AbstractList<? extends E> list, int fromIndex, int toIndex) {
              Intrinsics.checkNotNullParameter(list, "list");
              this.list = list;
              this.fromIndex = fromIndex;
              Companion.checkRangeIndexes$kotlin_stdlib(this.fromIndex, toIndex, this.list.size());
              this._size = toIndex - this.fromIndex;
          }
      }
  
      @Metadata(mv={1, 4, 0}, bv={1, 0, 3}, k=1, d1={"\u0000\u001c\n\u0002\u0018\u0002\n\u0002\u0010(\n\u0002\b\u0002\n\u0002\u0010\b\n\u0002\b\u0005\n\u0002\u0010\u000b\n\u0002\b\u0003\b\u0092\u0004\u0018\u00002\b\u0012\u0004\u0012\u00028\u00000\u0001B\u0005\u00a2\u0006\u0002\u0010\u0002J\t\u0010\t\u001a\u00020\nH\u0096\u0002J\u000e\u0010\u000b\u001a\u00028\u0000H\u0096\u0002\u00a2\u0006\u0002\u0010\fR\u001a\u0010\u0003\u001a\u00020\u0004X\u0084\u000e\u00a2\u0006\u000e\n\u0000\u001a\u0004\b\u0005\u0010\u0006\"\u0004\b\u0007\u0010\b\u00a8\u0006\r"}, d2={"Lkotlin/collections/AbstractList$IteratorImpl;", "", "(Lkotlin/collections/AbstractList;)V", "index", "", "getIndex", "()I", "setIndex", "(I)V", "hasNext", "", "next", "()Ljava/lang/Object;", "kotlin-stdlib"})
      private class IteratorImpl
      implements Iterator<E>,
      KMappedMarker {
          private int index;
  
          protected final int getIndex() {
              return this.index;
          }
  
          protected final void setIndex(int n) {
              this.index = n;
          }
  
          @Override
          public boolean hasNext() {
              return this.index < AbstractList.this.size();
          }
  
          @Override
          public E next() {
              if (!this.hasNext()) {
                  throw (Throwable)new NoSuchElementException();
              }
              int n = this.index;
              this.index = n + 1;
              return AbstractList.this.get(n);
          }
  
          @Override
          public void remove() {
              throw new UnsupportedOperationException("Operation is not supported for read-only collection");
          }
      }
  
      @Metadata(mv={1, 4, 0}, bv={1, 0, 3}, k=1, d1={"\u0000\"\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\u0010*\n\u0000\n\u0002\u0010\b\n\u0002\b\u0002\n\u0002\u0010\u000b\n\u0002\b\u0005\b\u0092\u0004\u0018\u00002\f0\u0001R\b\u0012\u0004\u0012\u00028\u00000\u00022\b\u0012\u0004\u0012\u00028\u00000\u0003B\r\u0012\u0006\u0010\u0004\u001a\u00020\u0005\u00a2\u0006\u0002\u0010\u0006J\b\u0010\u0007\u001a\u00020\bH\u0016J\b\u0010\t\u001a\u00020\u0005H\u0016J\r\u0010\n\u001a\u00028\u0000H\u0016\u00a2\u0006\u0002\u0010\u000bJ\b\u0010\f\u001a\u00020\u0005H\u0016\u00a8\u0006\r"}, d2={"Lkotlin/collections/AbstractList$ListIteratorImpl;", "Lkotlin/collections/AbstractList$IteratorImpl;", "Lkotlin/collections/AbstractList;", "", "index", "", "(Lkotlin/collections/AbstractList;I)V", "hasPrevious", "", "nextIndex", "previous", "()Ljava/lang/Object;", "previousIndex", "kotlin-stdlib"})
      private class ListIteratorImpl
      extends IteratorImpl
      implements ListIterator<E>,
      KMappedMarker {
          @Override
          public boolean hasPrevious() {
              return this.getIndex() > 0;
          }
  
          @Override
          public int nextIndex() {
              return this.getIndex();
          }
  
          @Override
          public E previous() {
              if (!this.hasPrevious()) {
                  throw (Throwable)new NoSuchElementException();
              }
              ListIteratorImpl listIteratorImpl = this;
              listIteratorImpl.setIndex(listIteratorImpl.getIndex() + -1);
              return AbstractList.this.get(listIteratorImpl.getIndex());
          }
  
          @Override
          public int previousIndex() {
              return this.getIndex() - 1;
          }
  
          public ListIteratorImpl(int index) {
              Companion.checkPositionIndex$kotlin_stdlib(index, AbstractList.this.size());
              this.setIndex(index);
          }
  
          @Override
          public void add(E e) {
              throw new UnsupportedOperationException("Operation is not supported for read-only collection");
          }
  
          @Override
          public void set(E e) {
              throw new UnsupportedOperationException("Operation is not supported for read-only collection");
          }
      }
  
      @Metadata(mv={1, 4, 0}, bv={1, 0, 3}, k=1, d1={"\u0000(\n\u0002\u0018\u0002\n\u0002\u0010\u0000\n\u0002\b\u0002\n\u0002\u0010\u0002\n\u0000\n\u0002\u0010\b\n\u0002\b\r\n\u0002\u0010\u000b\n\u0000\n\u0002\u0010\u001e\n\u0002\b\u0005\b\u0080\u0003\u0018\u00002\u00020\u0001B\u0007\b\u0002\u00a2\u0006\u0002\u0010\u0002J%\u0010\u0003\u001a\u00020\u00042\u0006\u0010\u0005\u001a\u00020\u00062\u0006\u0010\u0007\u001a\u00020\u00062\u0006\u0010\b\u001a\u00020\u0006H\u0000\u00a2\u0006\u0002\b\tJ\u001d\u0010\n\u001a\u00020\u00042\u0006\u0010\u000b\u001a\u00020\u00062\u0006\u0010\b\u001a\u00020\u0006H\u0000\u00a2\u0006\u0002\b\fJ\u001d\u0010\r\u001a\u00020\u00042\u0006\u0010\u000b\u001a\u00020\u00062\u0006\u0010\b\u001a\u00020\u0006H\u0000\u00a2\u0006\u0002\b\u000eJ%\u0010\u000f\u001a\u00020\u00042\u0006\u0010\u0010\u001a\u00020\u00062\u0006\u0010\u0011\u001a\u00020\u00062\u0006\u0010\b\u001a\u00020\u0006H\u0000\u00a2\u0006\u0002\b\u0012J%\u0010\u0013\u001a\u00020\u00142\n\u0010\u0015\u001a\u0006\u0012\u0002\b\u00030\u00162\n\u0010\u0017\u001a\u0006\u0012\u0002\b\u00030\u0016H\u0000\u00a2\u0006\u0002\b\u0018J\u0019\u0010\u0019\u001a\u00020\u00062\n\u0010\u0015\u001a\u0006\u0012\u0002\b\u00030\u0016H\u0000\u00a2\u0006\u0002\b\u001a\u00a8\u0006\u001b"}, d2={"Lkotlin/collections/AbstractList$Companion;", "", "()V", "checkBoundsIndexes", "", "startIndex", "", "endIndex", "size", "checkBoundsIndexes$kotlin_stdlib", "checkElementIndex", "index", "checkElementIndex$kotlin_stdlib", "checkPositionIndex", "checkPositionIndex$kotlin_stdlib", "checkRangeIndexes", "fromIndex", "toIndex", "checkRangeIndexes$kotlin_stdlib", "orderedEquals", "", "c", "", "other", "orderedEquals$kotlin_stdlib", "orderedHashCode", "orderedHashCode$kotlin_stdlib", "kotlin-stdlib"})
      public static final class Companion {
          public final void checkElementIndex$kotlin_stdlib(int index, int size) {
              if (index < 0 || index >= size) {
                  throw (Throwable)new IndexOutOfBoundsException("index: " + index + ", size: " + size);
              }
          }
  
          public final void checkPositionIndex$kotlin_stdlib(int index, int size) {
              if (index < 0 || index > size) {
                  throw (Throwable)new IndexOutOfBoundsException("index: " + index + ", size: " + size);
              }
          }
  
          public final void checkRangeIndexes$kotlin_stdlib(int fromIndex, int toIndex, int size) {
              if (fromIndex < 0 || toIndex > size) {
                  throw (Throwable)new IndexOutOfBoundsException("fromIndex: " + fromIndex + ", toIndex: " + toIndex + ", size: " + size);
              }
              if (fromIndex > toIndex) {
                  throw (Throwable)new IllegalArgumentException("fromIndex: " + fromIndex + " > toIndex: " + toIndex);
              }
          }
  
          public final void checkBoundsIndexes$kotlin_stdlib(int startIndex, int endIndex, int size) {
              if (startIndex < 0 || endIndex > size) {
                  throw (Throwable)new IndexOutOfBoundsException("startIndex: " + startIndex + ", endIndex: " + endIndex + ", size: " + size);
              }
              if (startIndex > endIndex) {
                  throw (Throwable)new IllegalArgumentException("startIndex: " + startIndex + " > endIndex: " + endIndex);
              }
          }
  
          public final int orderedHashCode$kotlin_stdlib(@NotNull Collection<?> c) {
              Intrinsics.checkNotNullParameter(c, "c");
              int hashCode = 1;
              Iterator<?> iterator2 = c.iterator();
              while (iterator2.hasNext()) {
                  Object e;
                  Object obj = e = iterator2.next();
                  hashCode = 31 * hashCode + (obj != null ? obj.hashCode() : 0);
              }
              return hashCode;
          }
  
          public final boolean orderedEquals$kotlin_stdlib(@NotNull Collection<?> c, @NotNull Collection<?> other) {
              Intrinsics.checkNotNullParameter(c, "c");
              Intrinsics.checkNotNullParameter(other, "other");
              if (c.size() != other.size()) {
                  return false;
              }
              Iterator<?> otherIterator = other.iterator();
              for (Object elem : c) {
                  Object elemOther;
                  if (!(Intrinsics.areEqual(elem, elemOther = otherIterator.next()) ^ true)) continue;
                  return false;
              }
              return true;
          }
  
          private Companion() {
          }
  
          public /* synthetic */ Companion(DefaultConstructorMarker $constructor_marker) {
              this();
          }
      }
  }
  
  