Method unions and explicit nullability

Method and constructor implementation analysis retains the v1 counting contract: pure, total, parametric, null-free implementations. It does not count stored values or certify an existing body.

Scala's A | B is untagged and alternatives may overlap. It is not Either[A, B]. The supported normalization is deliberately narrow:

Source declarations shadow builtin names as usual. This rule does not assume that a user-defined type called Null is empty.

This is intentionally not a nullable stored-value estimate: stored values can include null and their union sizes require their own overlap reasoning. In particular, this change does not claim that nullable data has the same number of runtime values as non-nullable data, nor that two distinct nominal alternatives have disjoint observationally tagged constructors.