Usage of extensions for protocol conformance in owned objects

This is a frequent question. See previous discussions like