code: public int unpackArrayHeader()
              throws IOException
      {
          byte b = readByte();
          if (Code.isFixedArray(b)) { // fixarray
              return b & 0x0f;
          }
          switch (b) {
              case Code.ARRAY16: { // array 16
                  int len = readNextLength16();
                  return len;
              }
              case Code.ARRAY32: { // array 32
                  int len = readNextLength32();
                  return len;
              }
          }
          throw unexpected("Array", b);
      }
docs: Reads header of an array.
  
  <p>
  This method returns number of elements to be read. After this method call, you call unpacker methods for
  each element. You don't have to call anything at the end of iteration.
  
  @return the size of the array to be read
  @throws MessageTypeException when value is not MessagePack Array type
  @throws MessageSizeException when size of the array is larger than 2^31 - 1
  @throws IOException when underlying input throws IOException