Newer
Older
void-pack-super-server / work / decompile-ee3ecae0 / net / minecraft / server / NonNullList.java
package net.minecraft.server;

import com.google.common.collect.Lists;
import java.util.AbstractList;
import java.util.Arrays;
import java.util.List;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import org.apache.commons.lang3.Validate;

public class NonNullList<E> extends AbstractList<E> {

    private final List<E> a;
    private final E b;

    public static <E> NonNullList<E> a() {
        return new NonNullList<>();
    }

    public static <E> NonNullList<E> a(int i, E e0) {
        Validate.notNull(e0);
        Object[] aobject = new Object[i];

        Arrays.fill(aobject, e0);
        return new NonNullList<>(Arrays.asList(aobject), e0);
    }

    @SafeVarargs
    public static <E> NonNullList<E> a(E e0, E... ae) {
        return new NonNullList<>(Arrays.asList(ae), e0);
    }

    protected NonNullList() {
        this(Lists.newArrayList(), (Object) null);
    }

    protected NonNullList(List<E> list, @Nullable E e0) {
        this.a = list;
        this.b = e0;
    }

    @Nonnull
    public E get(int i) {
        return this.a.get(i);
    }

    public E set(int i, E e0) {
        Validate.notNull(e0);
        return this.a.set(i, e0);
    }

    public void add(int i, E e0) {
        Validate.notNull(e0);
        this.a.add(i, e0);
    }

    public E remove(int i) {
        return this.a.remove(i);
    }

    public int size() {
        return this.a.size();
    }

    public void clear() {
        if (this.b == null) {
            super.clear();
        } else {
            for (int i = 0; i < this.size(); ++i) {
                this.set(i, this.b);
            }
        }

    }
}