remove shall copy without retaining the buffer - this does not work!
remove is successful even if it did not not remove anything. The flag
failIfNotFound can be used to fail if nothing was removed. If one data
item got removed, the remove is considered successful
improved testcases