bab9cde280
1. Substitution variance (sv) is a substitution composition of type alias argument variance (av) and corresponding expanding type argument variance (ev): sv = | av == ev -> av | av == INVARIANT -> ev | ev == INVARIANT -> av | else -> (variance conflict error; av) 2. Resulting variance (rv) is a type argument composition of sv and type parameter variance (pv): rv = | sv == tv => INVARIANT | sv == INVARIANT => INVARIANT | tv == INVARIANT => sv | else -> (variance conflict error; sv)