protected short[] readFlags(IDataInput input) { boolean hasNextFlag = true; short[] flagsArray = new short[2]; int i = 0; while (hasNextFlag) { short flags = (short) input.readUnsignedByte(); log.debug("Unsigned byte: {}", flags); if (i == flagsArray.length) { short[] tempArray = new short[i * 2]; System.arraycopy(flagsArray, 0, tempArray, 0, flagsArray.length); flagsArray = tempArray; } flagsArray[i] = flags; if ((flags & 0x80) != 0) { hasNextFlag = true; } else { hasNextFlag = false; } ++i; } log.debug("Flag count: {}", flagsArray.length); return flagsArray; }