Syntax
set aTargetObject = anInputObject.mapEqualNamesIfExists([anotherInputObject]+);
append mapEqualNamesIfExists(anInputObject) to anArrayOfTargetObjects;
Semantics

The macro works like mapEqualNames if the mapped source attribute exists. If it doesn't exist, the mapping is skipped for this attribute. This way existing target attributes are not overwritten by NULL values of source attributes.

You can supply multiple input objects.

Only the existence of the attribute values is checked. It is assumed that the input object exists.

This macro does not work recursively and thus do not perform a deep copy of attributes of complex types.

Substitutables anInputObject, anotherInputObjectCan be any complex object having attributes of any type. 
Examples
set person = person1.mapEqualNames(person2, person3);
set person.address = mapEqualNames(address);
set person.alternativeAddress = detailedPerson.address.mapEqualNames();
set person.adress = mapEqualNames(detailedPerson.addresses[0]);
append mapEqualNames(detailedPerson) to people;