class A {}
class B : A {}

class X
{
	public static A Test (A a, B b)
	{
		return b ?? a;
	}

	public static int Main ()
	{
		A a = new A ();
		B b = new B ();

		if (Test (a, b) != b)
			return 1;

		if (Test (null, b) != b)
			return 2;

		if (Test (a, null) != a)
			return 3;

		if (Test (null, null) != null)
			return 4;

		return 0;

	}
}