Hint from a Reddit
One more thing I'd suggest adding: Verify that the sum type is never embedded into a struct. It can be included as a named member but it should never be embedded as that will generate a new type that will pass the check to be a valid SumFoo interface member but can't be correctly deconstructed by a switch sumVal.(type) call that expects to be able to name all the implementing types.