{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE ScopedTypeVariables #-}
class FooC a b where
type FooE a b
foob :: a -> FooE a b -> b
foo :: forall a b. FooC a b => [FooE a b] -> [b]
ey0jIExBTkdVQUdFIFR5cGVGYW1pbGllcyAjLX0Key0jIExBTkdVQUdFIE11bHRpUGFyYW1UeXBlQ2xhc3NlcyAjLX0Key0jIExBTkdVQUdFIFNjb3BlZFR5cGVWYXJpYWJsZXMgIy19CgpjbGFzcyBGb29DIGEgYiB3aGVyZQogIHR5cGUgRm9vRSBhIGIKICBmb29iIDo6IGEgLT4gRm9vRSBhIGIgLT4gYgoKZm9vIDo6IGZvcmFsbCBhIGIuIEZvb0MgYSBiID0+IFtGb29FIGEgYl0gLT4gW2JdCmZvbyA9IG1hcCAoZm9vYiAodW5kZWZpbmVkIDo6IGEpKQoKbWFpbiA6OiBJTyAoKQptYWluID0gdW5kZWZpbmVkCg==