@Override
    void load(DataInput datainput, int depth) {
        try {
            if (depth > 512) {
                throw new RuntimeException("Tried to read NBT tag with too high complexity, depth > 512");
            } else {
                this.type = datainput.readByte();
                int j = datainput.readInt();

                this.list = new ArrayList();

                for (int k = 0; k < j; ++k) {
                    NBTBase nbtbase = NBTBase.createTagById(this.type);

                    nbtbase.load(datainput, depth + 1);
                    this.list.add(nbtbase);
                }
            }
        } catch (IOException e) {
            throw new NBTReadException(e);
        }
    }