--- a/net/minecraft/nbt/ByteArrayTag.java
+++ b/net/minecraft/nbt/ByteArrayTag.java
@@ -1,3 +1,4 @@
+// mc-dev import
 package net.minecraft.nbt;
 
 import java.io.DataInput;
@@ -8,11 +9,12 @@
 import org.apache.commons.lang3.ArrayUtils;
 
 public class ByteArrayTag extends CollectionTag<ByteTag> {
+
     private static final int SELF_SIZE_IN_BYTES = 24;
     public static final TagType<ByteArrayTag> TYPE = new TagType.VariableSize<ByteArrayTag>() {
         @Override
-        public ByteArrayTag load(DataInput dataInput, NbtAccounter nbtAccounter) throws IOException {
-            return new ByteArrayTag(readAccounted(dataInput, nbtAccounter));
+        public ByteArrayTag load(DataInput input, NbtAccounter tracker) throws IOException {
+            return new ByteArrayTag(readAccounted(input, tracker));
         }
 
         @Override
@@ -23,10 +25,13 @@
         private static byte[] readAccounted(DataInput input, NbtAccounter tracker) throws IOException {
             tracker.accountBytes(24L);
             int i = input.readInt();
-            tracker.accountBytes(1L, (long)i);
-            byte[] bs = new byte[i];
-            input.readFully(bs);
-            return bs;
+            com.google.common.base.Preconditions.checkArgument( i < 1 << 24); // Spigot
+
+            tracker.accountBytes(1L, (long) i);
+            byte[] abyte = new byte[i];
+
+            input.readFully(abyte);
+            return abyte;
         }
 
         @Override
@@ -51,18 +56,19 @@
     }
 
     public ByteArrayTag(List<Byte> value) {
-        this(toArray(value));
+        this(ByteArrayTag.toArray(value));
     }
 
     private static byte[] toArray(List<Byte> list) {
-        byte[] bs = new byte[list.size()];
+        byte[] abyte = new byte[list.size()];
 
-        for (int i = 0; i < list.size(); i++) {
-            Byte byte_ = list.get(i);
-            bs[i] = byte_ == null ? 0 : byte_;
+        for (int i = 0; i < list.size(); ++i) {
+            Byte obyte = (Byte) list.get(i);
+
+            abyte[i] = obyte == null ? 0 : obyte;
         }
 
-        return bs;
+        return abyte;
     }
 
     @Override
@@ -83,7 +89,7 @@
 
     @Override
     public TagType<ByteArrayTag> getType() {
-        return TYPE;
+        return ByteArrayTag.TYPE;
     }
 
     @Override
@@ -93,17 +99,16 @@
 
     @Override
     public Tag copy() {
-        byte[] bs = new byte[this.data.length];
-        System.arraycopy(this.data, 0, bs, 0, this.data.length);
-        return new ByteArrayTag(bs);
+        byte[] abyte = new byte[this.data.length];
+
+        System.arraycopy(this.data, 0, abyte, 0, this.data.length);
+        return new ByteArrayTag(abyte);
     }
 
-    @Override
     public boolean equals(Object object) {
-        return this == object || object instanceof ByteArrayTag && Arrays.equals(this.data, ((ByteArrayTag)object).data);
+        return this == object ? true : object instanceof ByteArrayTag && Arrays.equals(this.data, ((ByteArrayTag) object).data);
     }
 
-    @Override
     public int hashCode() {
         return Arrays.hashCode(this.data);
     }
@@ -117,32 +122,29 @@
         return this.data;
     }
 
-    @Override
     public int size() {
         return this.data.length;
     }
 
-    @Override
     public ByteTag get(int i) {
         return ByteTag.valueOf(this.data[i]);
     }
 
-    @Override
-    public ByteTag set(int i, ByteTag byteTag) {
-        byte b = this.data[i];
-        this.data[i] = byteTag.getAsByte();
-        return ByteTag.valueOf(b);
+    public ByteTag set(int i, ByteTag nbttagbyte) {
+        byte b0 = this.data[i];
+
+        this.data[i] = nbttagbyte.getAsByte();
+        return ByteTag.valueOf(b0);
     }
 
-    @Override
-    public void add(int i, ByteTag byteTag) {
-        this.data = ArrayUtils.add(this.data, i, byteTag.getAsByte());
+    public void add(int i, ByteTag nbttagbyte) {
+        this.data = ArrayUtils.add(this.data, i, nbttagbyte.getAsByte());
     }
 
     @Override
     public boolean setTag(int index, Tag element) {
         if (element instanceof NumericTag) {
-            this.data[index] = ((NumericTag)element).getAsByte();
+            this.data[index] = ((NumericTag) element).getAsByte();
             return true;
         } else {
             return false;
@@ -152,7 +154,7 @@
     @Override
     public boolean addTag(int index, Tag element) {
         if (element instanceof NumericTag) {
-            this.data = ArrayUtils.add(this.data, index, ((NumericTag)element).getAsByte());
+            this.data = ArrayUtils.add(this.data, index, ((NumericTag) element).getAsByte());
             return true;
         } else {
             return false;
@@ -161,9 +163,10 @@
 
     @Override
     public ByteTag remove(int i) {
-        byte b = this.data[i];
+        byte b0 = this.data[i];
+
         this.data = ArrayUtils.remove(this.data, i);
-        return ByteTag.valueOf(b);
+        return ByteTag.valueOf(b0);
     }
 
     @Override
@@ -171,7 +174,6 @@
         return 1;
     }
 
-    @Override
     public void clear() {
         this.data = new byte[0];
     }
