Make `Coalescer` operate on `EntityFieldBasedPropExpressionInterface` objects instead of lists of strings
> **Follow-up of** [!1112](https://git.drupalcode.org/project/canvas/-/merge_requests/1112) — see the "Optional follow-up tightening" list in [note 1200411](https://git.drupalcode.org/project/canvas/-/merge_requests/1112#note_1200411). ### Overview `Coalescer` currently returns lists of strings throughout. It would be easier to maintain, debug, and understand if it operated on `EntityFieldBasedPropExpressionInterface` objects instead, converting to a list of strings only at the boundary where strings are actually needed. That conversion is trivial. This was deliberately left out of scope for !1112: keeping the string-based representation until an object-based one is actually needed avoided extra churn. ### Proposed resolution Refactor `Coalescer` to carry `EntityFieldBasedPropExpressionInterface` objects internally and convert to strings only at the point of use. ### Remaining tasks - Change `Coalescer`'s internal representation to objects. - Convert to strings only where consumers require them.
issue