Define projection function contract: returned doc shouldn't retain anything from the passed argument.
Projection function never retains anything from passed doc.

Always does deep copy.