As this is a public method, it could be worth mentioning that the source is read only when the buffer is empty.