No it, just keeps them until toBytes() is called. That's when a BytesInput is created so we need to keep them around. This is to avoid the copies incurred by using ByteArrayOutputStream.