type messageSet … // Add a message for obj and part, overwriting a previous message // (shouldn't happen). // obj is required but part can be empty. func (m messageSet) add(obj types.Object, part, msg string) { … } func (m messageSet) collect() []string { … } func objectString(obj types.Object) string { … } func dotjoin(s1, s2 string) string { … }