A subscriber looking for Tuple<T> should receive events for Tuple<R> where R is a subtype of T, but not Tuple<P> where T is a subtype of P. I think this is covariance in generic types.