I like the pattern where it gives ownership, and the return value returns that ownership. I hadn't really considered that as a valid pattern yet, coming from other languages!
Despite the little cop picture there's no requirement there to 'return ownership'. It's more like saying I'll gives you a doc provided you agree to give me a doc.