code: public int unpackBinaryHeader()
              throws IOException
      {
          byte b = readByte();
          if (Code.isFixedRaw(b)) { // FixRaw
              return b & 0x1f;
          }
          int len = tryReadBinaryHeader(b);
          if (len >= 0) {
              return len;
          }
  
          if (allowReadingStringAsBinary) {
              len = tryReadStringHeader(b);
              if (len >= 0) {
                  return len;
              }
          }
          throw unexpected("Binary", b);
      }
docs: Reads header of a binary.
  
  <p>
  This method returns number of bytes to be read. After this method call, you call a readPayload method such as
  {@link #readPayload(int)} with the returned count.
  
  <p>
  You can divide readPayload method into multiple calls. In this case, you must repeat readPayload methods
  until total amount of bytes becomes equal to the returned count.
  
  @return the size of the map to be read
  @throws MessageTypeException when value is not MessagePack Map type
  @throws MessageSizeException when size of the map is larger than 2^31 - 1
  @throws IOException when underlying input throws IOException