This class maintains its own internal buffer and extends it, if the it is too small to fit the desired data.
The main reason of using this class is to avoid unnecessary memory allocations. For example, the same memory can be used for getting the driver notification and then storing the reply message into, so there's no need to allocate two separate memory blocks.