data S a = S1 (a Int) | S2 Unit | S3 (D a); data D b = D1 (S b); class C c where { bar :: c Int -> (D c, Bool); }