MultiDist is a struct that is a MultivariateDistribution. One of the fields of that struct, dist, is a UnivariateDistribution. Both should have the same ValueSupport, either Continuous or Discrete. At no point in my example do I imply one of the
relations you wrote.
Because you need to define S as a type parameter in order to use it, i.e. MultiIDist{S <: ValueSupport, ...}. Except in special cases like declaration of type parameter and declaration of type, <: doesn’t automatically declare a type parameter, the S <: ValueSupport in your code is simply an expression and the value of that expression is being applied to the type.