```scala given foo as Foo = ... given as Foo = ... given (x: X) as Foo = ... given [X](x: X) as Foo = ... given foo(x: X) as Foo = ... given foo[X](x: X) as Foo = ... ```