I could use some clarification here. You can't assume a single trait per struct or enum if a given struct or enum can have multiple impl blocks. Would such desugaring involve concatenating all impl blocks for the same type in any given scope?