You should filter out the null items before calling the second line using a where clause. But if you can't control that code like you said you can return a "fake" Person
that knows it's fake and does nothing when you call AdditionalInfo
Person person = publicationResolverService.GetPerson(personUri);
if (author != null)
{
person.Id = personUri.ItemId.ToString();
}
else
{
person = _fakePerson;
}
return person;