<?xml version="1.0" encoding="us-ascii"?>
<ErrorDocumentation xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <ErrorName>CS0121</ErrorName>
  <Examples>
    <string>// cs0121-2.cs: The call is ambiguous between the following methods or properties: `IFoo.DoIt()' and `IBar.DoIt()'
// Line: 9

class A : IFooBar {
	static void Main ()
	{
		A a = new A ();
		IFooBar fb = (IFooBar) a;
		fb.DoIt ();
	}

	void IFoo.DoIt ()
	{
		System.Console.WriteLine ("void IFoo.DoIt ()");
	}

	void IBar.DoIt ()
	{
		System.Console.WriteLine ("void IBar.DoIt ()");
	}
}

interface IFoo {
	void DoIt ();
}

interface IBar {
	void DoIt ();
}

interface IFooBar : IFoo, IBar {}</string>
    <string>// CS0121: The call is ambiguous between the following methods or properties: `B.operator +(A, B)' and `A.operator +(A, B)'
// Line: 21

class A
{
	public static A operator + (A a, B b)
	{
		return null;
	}
}

class B
{
	public static A operator + (A a, B b)
	{
		return null;
	}

	static void Main ()
	{
		object o = new A () + new B ();
	}
}
</string>
    <string>// cs0121-4.cs: The call is ambiguous between the following methods or properties: `X.Add(float, float, float)' and `X.Add(params decimal[])'
// Line: 7

class X {
	static void Add (float f1, float f2, float f3) {}
	static void Add (params decimal [] ds) {}
	public static void Main () { Add (1, 2, 3); }
}
</string>
    <string>// CS0121: The call is ambiguous between the following methods or properties: `V3.operator -(V3, V3)' and `V2.operator -(V2, V2)'
// Line: 45

public struct V3
{
	public float x, y, z;

	public V3 (float ix, float iy, float iz) { x = ix; y = iy; z = iz; }

	static public V3 operator - (V3 lhs, V3 rhs)
	{
		return new V3 (lhs.x - rhs.x, lhs.y - rhs.y, lhs.z - rhs.z);
	}
}

public struct V2
{
	public float x, y;

	public V2 (float ix, float iy) { x = ix; y = iy; }

	public static implicit operator V2 (V3 v)
	{
		return new V2 (v.x, v.y);
	}

	public static implicit operator V3 (V2 v)
	{
		return new V3 (v.x, v.y, 0);
	}

	static public V2 operator - (V2 lhs, V2 rhs)
	{
		return new V2 (lhs.x - rhs.x, lhs.y - rhs.y);
	}
}

internal class Test
{
	static void Main ()
	{
		V2 a = new V2 ();
		V3 b = new V3 ();

		V2 s = a - b;
	}
}
</string>
    <string>// CS0121: The call is ambiguous between the following methods or properties: `C.Foo(object, string)' and `C.Foo(int, object)'
// Line: 13

class C
{
	delegate void D (int x, string s);

	static void Foo (object o, string s) { }
	static void Foo (int x, object o) { }

	static void Main ()
	{
		D d = Foo;
	}
}
</string>
    <string>// CS0121: The call is ambiguous between the following methods or properties: `D.Test(string)' and `D.Test(int, string)'
// Line: 16
// Compiler options: -langversion:future

public class D
{
	static void Test (string a = "s")
	{
	}

	static void Test (int i = 9, string a = "b")
	{
	}

	public static void Main ()
	{
		Test ();
	}
}
</string>
    <string>// CS0121: The call is ambiguous between the following methods or properties: `C.Foo(byte)' and `C.Foo(int)'
// Line: 18
// Compiler options: -langversion:future

class C
{
	static int Foo (byte b = 9)
	{
		return 4;
	}
	
	static int Foo (int i = 8)
	{
		return 2;
	}
	
	public static void Main ()
	{
		Foo ();
	}
}
</string>
    <string>// cs0121.cs: The call is ambiguous between the following methods or properties: `X.a(int, double)' and `X.a(double, int)'
// Line: 15

class X {
	static void a (int i, double d)
	{
	}

	static void a (double d, int i)
	{
	}

	public static void Main ()
	{
		a (0, 0);
	}
}	
</string>
  </Examples>
</ErrorDocumentation>