If required, throw a TestInStreamException (see throwExceptionIfInputLimitExhausted); otherwise, consume the 8-bit unsigned integer type code, verify the type of the next value in this stream, consume that 16-bit signed integer value into the specified variable if its type is appropriate, update the cursor location, and return a reference to this stream. If the type is incorrect, then this stream is marked invalid and the value of variable is unchanged. If this stream is initially invalid, this operation has no effect. If this function otherwise fails to extract a valid value, this stream is marked invalid and the value of variable is undefined.