class A<AA>
{
	public virtual AA Foo<U> (U u)
	{
		return default (AA);
	}
}

class B : A<object>
{
	public override dynamic Foo<T> (T t)
	{
		return 'c';
	}
}

public class MainClass
{
	public static int Main ()
	{
		B b = new B ();
		char res = b.Foo<int> (5);
		return 0;
	}
}