Variant types are used for values whose type could be one of several compliant concrete types. Use of a variant-typed value requires pattern-matching or virtual dispatch.

There are several kinds of variant types:

_