// (12,24): error CS0305: Using the generic method group 'Foo' requires 1 type arguments
// (13,44): error CS1061: 'string' does not contain a definition for 'ExtensionMethod0' and no extension method 'ExtensionMethod0' accepting a first argument of type 'string' could be found (are you missing a using directive or an assembly reference?)
// var defaultB = FooExtensions.Foo<>("b");
// var omittedArg0 = "string literal".ExtensionMethod0<>();
// (15,44): error CS1061: 'string' does not contain a definition for 'ExtensionMethod2' and no extension method 'ExtensionMethod2' accepting a first argument of type 'string' could be found (are you missing a using directive or an assembly reference?)
// var omittedArg2 = "string literal".ExtensionMethod2<>();
// (17,48): error CS1061: 'string' does not contain a definition for 'ExtensionMethod0' and no extension method 'ExtensionMethod0' accepting a first argument of type 'string' could be found (are you missing a using directive or an assembly reference?)
// var omittedArgFunc0 = "string literal".ExtensionMethod0<>;
// (19,48): error CS1061: 'string' does not contain a definition for 'ExtensionMethod2' and no extension method 'ExtensionMethod2' accepting a first argument of type 'string' could be found (are you missing a using directive or an assembly reference?)
// var omittedArgFunc2 = "string literal".ExtensionMethod2<>;
// (21,42): error CS1061: 'string' does not contain a definition for 'ExtensionMethod0' and no extension method 'ExtensionMethod0' accepting a first argument of type 'string' could be found (are you missing a using directive or an assembly reference?)
// var moreArgs0 = "string literal".ExtensionMethod0<int>();
// (22,42): error CS1061: 'string' does not contain a definition for 'ExtensionMethod1' and no extension method 'ExtensionMethod1' accepting a first argument of type 'string' could be found (are you missing a using directive or an assembly reference?)
// var moreArgs1 = "string literal".ExtensionMethod1<int, bool>();
// (23,42): error CS1061: 'string' does not contain a definition for 'ExtensionMethod2' and no extension method 'ExtensionMethod2' accepting a first argument of type 'string' could be found (are you missing a using directive or an assembly reference?)
// var moreArgs2 = "string literal".ExtensionMethod2<int, bool, string>();
// (25,42): error CS0411: The type arguments for method 'FooExtensions.ExtensionMethod1<T>(object)' cannot be inferred from the usage. Try specifying the type arguments explicitly.
// var lessArgs1 = "string literal".ExtensionMethod1();
// (26,42): error CS1061: 'string' does not contain a definition for 'ExtensionMethod2' and no extension method 'ExtensionMethod2' accepting a first argument of type 'string' could be found (are you missing a using directive or an assembly reference?)
// var lessArgs2 = "string literal".ExtensionMethod2<int>();
// (28,51): error CS1061: 'string' does not contain a definition for 'ExtensionMethodNotFound0' and no extension method 'ExtensionMethodNotFound0' accepting a first argument of type 'string' could be found (are you missing a using directive or an assembly reference?)
// var nonExistingMethod0 = "string literal".ExtensionMethodNotFound0();
// (29,51): error CS1061: 'string' does not contain a definition for 'ExtensionMethodNotFound1' and no extension method 'ExtensionMethodNotFound1' accepting a first argument of type 'string' could be found (are you missing a using directive or an assembly reference?)
// var nonExistingMethod1 = "string literal".ExtensionMethodNotFound1<int>();
// (30,51): error CS1061: 'string' does not contain a definition for 'ExtensionMethodNotFound2' and no extension method 'ExtensionMethodNotFound2' accepting a first argument of type 'string' could be found (are you missing a using directive or an assembly reference?)
// var nonExistingMethod2 = "string literal".ExtensionMethodNotFound2<int, string>();
BC36589: Type parameter 'T' for extension method 'Public Function Foo(Of T)() As Object' defined in 'FooExtensions' cannot be inferred.
BC36907: Extension method 'Public Function ExtensionMethod0() As Object' defined in 'FooExtensions' is not generic (or has no free type parameters) and so cannot have type arguments.
Dim typeA As Type = "a".Foo()
Dim omittedArg0 As Type = "string literal".ExtensionMethod0(Of )()
~~~
~~~~~
BC36589: Type parameter 'T' for extension method 'Public Function Foo(Of T)() As Object' defined in 'FooExtensions' cannot be inferred.
BC30182: Type expected.
Dim typeB As Type = "b".Foo()()
Dim omittedArg0 As Type = "string literal".ExtensionMethod0(Of )()
~~~
~
BC30182: Type expected.
Dim omittedArg1 As Type = "string literal".ExtensionMethod1(Of )()
~
BC36590: Too few type arguments to extension method 'Public Function ExtensionMethod2(Of T1, T2)() As Object' defined in 'FooExtensions'.
Dim omittedArg2 As Type = "string literal".ExtensionMethod2(Of )()
~~~~~
BC30182: Type expected.
Dim omittedArg2 As Type = "string literal".ExtensionMethod2(Of )()
~
BC36907: Extension method 'Public Function ExtensionMethod0() As Object' defined in 'FooExtensions' is not generic (or has no free type parameters) and so cannot have type arguments.
Dim omittedArgFunc0 As Func(Of Object) = "string literal".ExtensionMethod0(Of )
~~~~~
BC30182: Type expected.
Dim omittedArgFunc0 As Func(Of Object) = "string literal".ExtensionMethod0(Of )
~
BC30182: Type expected.
Dim omittedArgFunc1 As Func(Of Object) = "string literal".ExtensionMethod1(Of )
~
BC36590: Too few type arguments to extension method 'Public Function ExtensionMethod2(Of T1, T2)() As Object' defined in 'FooExtensions'.
Dim omittedArgFunc2 As Func(Of Object) = "string literal".ExtensionMethod2(Of )
~~~~~
BC30182: Type expected.
Dim omittedArgFunc2 As Func(Of Object) = "string literal".ExtensionMethod2(Of )
~
BC36907: Extension method 'Public Function ExtensionMethod0() As Object' defined in 'FooExtensions' is not generic (or has no free type parameters) and so cannot have type arguments.
Dim moreArgs0 As Type = "string literal".ExtensionMethod0(Of Integer)()
~~~~~~~~~~~~
BC36591: Too many type arguments to extension method 'Public Function ExtensionMethod1(Of T)() As Object' defined in 'FooExtensions'.
Dim moreArgs1 As Type = "string literal".ExtensionMethod1(Of Integer, Boolean)()
~~~~~~~~~~~~~~~~~~~~~
BC36591: Too many type arguments to extension method 'Public Function ExtensionMethod2(Of T1, T2)() As Object' defined in 'FooExtensions'.
Dim moreArgs2 As Type = "string literal".ExtensionMethod2(Of Integer, Boolean, String)()
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
BC36589: Type parameter 'T' for extension method 'Public Function ExtensionMethod1(Of T)() As Object' defined in 'FooExtensions' cannot be inferred.
Dim lessArgs1 As Type = "string literal".ExtensionMethod1()
~~~~~~~~~~~~~~~~
BC36590: Too few type arguments to extension method 'Public Function ExtensionMethod2(Of T1, T2)() As Object' defined in 'FooExtensions'.
Dim lessArgs2 As Type = "string literal".ExtensionMethod2(Of Integer)()
~~~~~~~~~~~~
BC30456: 'ExtensionMethodNotFound0' is not a member of 'String'.
Dim nonExistingMethod0 As Type = "string literal".ExtensionMethodNotFound0()
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
BC30456: 'ExtensionMethodNotFound1' is not a member of 'String'.
Dim nonExistingMethod1 As Type = "string literal".ExtensionMethodNotFound1(Of Integer)()