replace preserveIdentity with delegation to a resolve fn which decides whether, in the case of identical keys, to return the left or the right hand side