When checking for FixArray and FixMap wrong mask is used, resulting in 16 and 32 bit array/map being decoded as fix array/map.
Similar problem with fix string. The check for FixString would also match negative fixnum, however this works because negative fixnum is matched first during decoding. Still a bug though.