yeah, seems like (1) works, but it seems brittle, relying on deduplication code everywhere (i.e. state_dict()  has separate keys, but named_parameters() returns one key, and standard serialization correctly stores an object once too)