So, given all this, we should focus all our ceremony-reduction on the
case of co-declared sum types. Which is mostly what I think I was
suggesting:
- Infer the permits clause when all the subtypes are co-declared;
- Infer “final” for leaf classes in a sum type;
- Require explicitness in both sealed/non-sealed, and permits
clause, in other cases.
How do you know from `sealed class X {}` and the rest of its
compilation unit that all X's subtypes are co-declared?
By co-declared, I mean "in the same compilation unit."