val ((T) -> G).foo

{ } val ((T) -> G).foo get{ } val ((T) -> G).foo

val ((T) -> G).foo: = 0 val ((T) -> G)?.foo val ((T) -> G)??.foo val (T.(A, C) -> ).foo {} val val @a T.(A).foo() val @[a] (T.(A)).foo() val @[a] ((A)-).foo() val c by A.B