Jörg Winter
interface Tuple2Semigroup<A, B> : Semigroup<Tuple2<A, B>> {
fun SA(): Semigroup<A>
fun SB(): Semigroup<B>
...etc