setNameOfFather(valueToUpdateIfNewNotNull(getNameOfFather(), infoPerson.getNomePai()));
setSocialSecurityNumber(valueToUpdateIfNewNotNull(getSocialSecurityNumber(), infoPerson.getNumContribuinte()));
setProfession(valueToUpdateIfNewNotNull(getProfession(), infoPerson.getProfissao()));
setGender((Gender) valueToUpdateIfNewNotNull(getGender(), infoPerson.getSexo()));
final PhysicalAddressData data = new PhysicalAddressData();
data.setAddress(valueToUpdateIfNewNotNull(getAddress(), infoPerson.getMorada()));
data.setAreaCode(valueToUpdateIfNewNotNull(getAreaCode(), infoPerson.getCodigoPostal()));
data.setAreaOfAreaCode(valueToUpdateIfNewNotNull(getAreaOfAreaCode(), infoPerson.getLocalidadeCodigoPostal()));
data.setArea(valueToUpdateIfNewNotNull(getArea(), infoPerson.getLocalidade()));
data.setParishOfResidence(valueToUpdateIfNewNotNull(getParishOfResidence(), infoPerson.getFreguesiaMorada()));
data.setDistrictSubdivisionOfResidence(valueToUpdateIfNewNotNull(getDistrictSubdivisionOfResidence(),
infoPerson.getConcelhoMorada()));
data.setDistrictOfResidence(valueToUpdateIfNewNotNull(getDistrictOfResidence(), infoPerson.getDistritoMorada()));
data.setCountryOfResidence(getCountryOfResidence());
setDefaultPhysicalAddressData(data);
if (!hasAnyPartyContact(Phone.class)) {
Phone.createPhone(this, infoPerson.getTelefone(), PartyContactType.PERSONAL, true);
Phone.createPhone(this, infoPerson.getWorkPhone(), PartyContactType.WORK, true);