// CS1956: The interface method `I<string>.M(out string)' implementation is ambiguous between following methods: `A<string,string>.M(out string)' and `A<string,string>.M(ref string)' in type `Test'
// Line: 17
// Compiler options: -warnaserror

interface I<T>
{
	void M (out T x);
}

class A<T, U>
{
	public virtual void M (out T t)
	{
		t = default (T);
	}

	public virtual void M (ref U u)
	{
	}
}

class Test : A<string, string>, I<string>
{
	static void Main ()
	{
		I<string> x = new Test ();
		string s;
		x.M (out y);
	}
}