public static Person MarryTo(Person person, Person spouse) { var newName = person.Name.With(name => name.LastName, spouse.Name.LastName); return(person.With(p => p.Name, newName)); }