unpackNil() and unpackBoolean() don't consume the first byte if it gets an unexpected value while other unpackXXX()s always consume the first byte. I'm concerned about the difference of these behaviors.