This is a "stream" that includes some in-memory data as well as another stream. The in-memory data (if not null
or empty) will be read first. Once the in-memory data has been exhausted, any additional reads will read data
from the input stream.
This is used in the use-case that an input stream contained a JSON command (e.g. AbstractMessage) followed by
additional binary data. The JSON parser may have read extra data over and beyond the actual JSON message data.
In that case, the extra data the JSON parser read will be found in an in-memory byte array. That additional
in-memory data byte array combined with the input stream that may contain even more data will both be stored
in this object so both pieces of data can be accessed using the normal input stream API.
This can also be used to prefix a binary blob (found in an input stream) with a byte array of in-memory data.
In other words, this can be used to prepare a message that consists of a JSON-message followed by a large
amount of data found in a stream.