    "Variance information."
    shared interface Variance of invariant | covariant | contravariant {}

    "Invariant means that neither subtype nor supertype can be accepted, the
     type has to be exactly that which is declared."
    shared object invariant satisfies Variance {
        string => "Invariant";
    }

    "Covariant means that subtypes of the given type may be returned."
    shared object covariant satisfies Variance {
        string => "Covariant";
    }

    "Contravariant means that supertypes of the given type may be accepted."
    shared object contravariant satisfies Variance {
        string => "Contravariant";
    }