// CS0457: Ambiguous user defined operators `D.implicit operator A(D)' and `C.implicit operator B(C)' when converting from `D' to `B'
// Line: 30

class A
{
}

class B : A
{
}

class C
{
	public static implicit operator B (C s)
	{
		return new B ();
	}
}

class D : C
{
	public static implicit operator A (D s)
	{
		return new B ();
	}

	public static void Main ()
	{
		D d = new D ();
		B b2 = (B) d;
	}
}