class D a where { bar :: a; } class C a where { type T a; foo :: a; } instance C Int where { type T Int = Bool; bar = 4; }