I should be able to easily create a tweaked copy of a Thing

(User Story, Investigate , Priority: High, Test Status: No automated tests yet , Reported By Justin du Coeur, )
Summary: This would be similar to the Scala case class copy function, creating a copy, possibly with tweaked fields.
A fine example is the Arisia Press Space. I am looking at an Interaction for a previous year, and sending out an invitation to return. I want to have a one-button way to create a copy of that Interaction with the same Org and Contacts, the "reached out to" flag set and the other flags unset.
It isn't clear whether the semantics of this function should open a new window to the new Thing, or whether that Thing should be opened in edit mode. My guess is "yes" to both, but it might well be option-controllable.
The syntax of this function is very strange. Ideally, it should be _copy(Which Year=Arisia 2017), but how do we specify that the LHS of the parameter is a Property syntactically? Making this work as desired is really the challenge here -- there's a general concept of parameter interpretation fighting to break out here, but I'm not yet sure what it means. (Specifically, there's a concept of interpreting the LHS not as a parameter name, but instead as a Property name, to be taken literally rather than interpreted in context. Ugly, but I vaguely recall this isn't the first time I've wanted this.)