However, as far as I can tell, it is never the case that an object will have no assignment for its .plural property. If the idea is that the object has no plural name text, then there are cases where the empty text is assigned.
As far as I understand the logic, it would be that objects which have no plurals can never be part of an identical group, so this check is designed to be a quick rejection of such objects. If that’s correct, should this logic be altered to make a comparison to the empty text instead of zero?
Compass and thedark and the couple of other I6 objects kicking around have .plural == 0. Maybe it was meant to catch the weird case of one of those having been passed.
I’m not sure it’d make sense to test the emptiness of the I6 pluralname / I7 printed plural name property. Capturing the output of the printing the plural name of something activity with the object is definitive; the printed plural name property just provides a default for that activity to rely on.
I think I must have just been looking at the ListEqual() routine’s code in a project, since ListWriter.i6t does have a note to the effect that in order for two objects to be assigned to the same partition class, they must “both have a plural property (not necessarily the same)”. As you note, that’s not necessarily sufficient in the context of I7’s printing the plural name of something activity.