module ConstrainedArgument where class Foo t type WithoutArgs = forall a. (Partial => a) -> a type WithArgs = forall a. (Foo a => a) -> a type MultiWithoutArgs = forall a. (Partial => Partial => a) -> a type MultiWithArgs = forall a b. (Foo a => Foo b => a) -> a