I'm actually OK with that, just that users can change it with no assignments and that could be surprising (e.g., executing `.synonyms['non existent key']` introduces that key.) Maybe set `self.synonyms.default_factory = None` after the loop so that can't happen?