Shouldn't we also check to make sure `targetPropertyNames` has at least one element?  A reference must contain an ID and at least one property name, right?