package io.netty.handler.codec;

import io.netty.util.Recycler;
import io.netty.util.internal.ObjectUtil;
import java.util.AbstractList;
import java.util.RandomAccess;

/* JADX INFO: loaded from: classes.dex */
final class CodecOutputList extends AbstractList<Object> implements RandomAccess {
    private static final Recycler<CodecOutputList> RECYCLER = new Recycler<CodecOutputList>() { // from class: io.netty.handler.codec.CodecOutputList.1
        /* JADX INFO: Access modifiers changed from: protected */
        /* JADX WARN: Can't rename method to resolve collision */
        @Override // io.netty.util.Recycler
        public CodecOutputList newObject(Recycler.Handle<CodecOutputList> handle) {
            return new CodecOutputList(handle);
        }
    };
    private Object[] array;
    private final Recycler.Handle<CodecOutputList> handle;
    private boolean insertSinceRecycled;
    private int size;

    private void checkIndex(int i2) {
        if (i2 >= this.size) {
            throw new IndexOutOfBoundsException();
        }
    }

    private void expandArray() {
        Object[] objArr = this.array;
        int length = objArr.length << 1;
        if (length < 0) {
            throw new OutOfMemoryError();
        }
        Object[] objArr2 = new Object[length];
        System.arraycopy(objArr, 0, objArr2, 0, objArr.length);
        this.array = objArr2;
    }

    private void insert(int i2, Object obj) {
        this.array[i2] = obj;
        this.insertSinceRecycled = true;
    }

    static CodecOutputList newInstance() {
        return RECYCLER.get();
    }

    @Override // java.util.AbstractList, java.util.AbstractCollection, java.util.Collection, java.util.List
    public boolean add(Object obj) {
        ObjectUtil.checkNotNull(obj, "element");
        try {
            insert(this.size, obj);
        } catch (IndexOutOfBoundsException unused) {
            expandArray();
            insert(this.size, obj);
        }
        this.size++;
        return true;
    }

    @Override // java.util.AbstractList, java.util.AbstractCollection, java.util.Collection, java.util.List
    public void clear() {
        this.size = 0;
    }

    @Override // java.util.AbstractList, java.util.List
    public Object get(int i2) {
        checkIndex(i2);
        return this.array[i2];
    }

    Object getUnsafe(int i2) {
        return this.array[i2];
    }

    boolean insertSinceRecycled() {
        return this.insertSinceRecycled;
    }

    void recycle() {
        for (int i2 = 0; i2 < this.size; i2++) {
            this.array[i2] = null;
        }
        clear();
        this.insertSinceRecycled = false;
        this.handle.recycle(this);
    }

    @Override // java.util.AbstractList, java.util.List
    public Object remove(int i2) {
        checkIndex(i2);
        Object[] objArr = this.array;
        Object obj = objArr[i2];
        int i3 = (this.size - i2) - 1;
        if (i3 > 0) {
            System.arraycopy(objArr, i2 + 1, objArr, i2, i3);
        }
        Object[] objArr2 = this.array;
        int i4 = this.size - 1;
        this.size = i4;
        objArr2[i4] = null;
        return obj;
    }

    @Override // java.util.AbstractList, java.util.List
    public Object set(int i2, Object obj) {
        ObjectUtil.checkNotNull(obj, "element");
        checkIndex(i2);
        Object obj2 = this.array[i2];
        insert(i2, obj);
        return obj2;
    }

    @Override // java.util.AbstractCollection, java.util.Collection, java.util.List
    public int size() {
        return this.size;
    }

    private CodecOutputList(Recycler.Handle<CodecOutputList> handle) {
        this.array = new Object[16];
        this.handle = handle;
    }

    @Override // java.util.AbstractList, java.util.List
    public void add(int i2, Object obj) {
        ObjectUtil.checkNotNull(obj, "element");
        checkIndex(i2);
        if (this.size == this.array.length) {
            expandArray();
        }
        int i3 = this.size;
        if (i2 != i3 - 1) {
            Object[] objArr = this.array;
            System.arraycopy(objArr, i2, objArr, i2 + 1, i3 - i2);
        }
        insert(i2, obj);
        this.size++;
    }
}
