<?xml version="1.0"?>
<ErrorDocumentation xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <ErrorName>CS0108</ErrorName>
  <Examples>
    <string>// CS0118: `B.Factory' hides inherited member `A.Factory(object)'. Use the new keyword if hiding was intended
// Line: 12
// Compiler options: -warnaserror -warn:2

public abstract class A
{
	public void Factory (object data) { }
}

public class B : A
{
	public delegate void Factory (object data, object fail);
}
</string>
    <string>// CS0108: `Outer.Inner' hides inherited member `Base.Inner'. Use the new keyword if hiding was intended
// Line: 13
// Compiler options: -warnaserror -warn:2

public class Base
{
    public int Inner { set { } }
}

class Outer: Base
{
    public void M () {}
    
    public class Inner
    {
    }
}</string>
    <string>// CS0108: `O.InnerAttribute' hides inherited member `Base.InnerAttribute()'. Use the new keyword if hiding was intended
// Line: 12
// Compiler options: -warnaserror -warn:2

using System;

public class Base
{
    public void InnerAttribute () {}
}

class O: Base
{
    [AttributeUsage(AttributeTargets.Class)]
    public sealed class InnerAttribute: Attribute {
    }        
}

class D {
	static void Main () {}
}
</string>
    <string>// CS0108: `A.B.AnInt' hides inherited member `A.AnInt'. Use the new keyword if hiding was intended
// Line: 11
// Compiler options: -warnaserror

public abstract class A
{
	static readonly int AnInt = 2;

	public class B : A
	{
		static readonly int AnInt = 3;
	}
}
</string>
    <string>// CS0108: `IB.Foo(int)' hides inherited member `IA.Foo'. Use the new keyword if hiding was intended
// Line: 13
// Compiler options: -warnaserror

interface IA
{
	bool Foo { get; }
}

interface IB : IA
{
	new void Foo ();
	void Foo (int a);
}
</string>
    <string>// CS0108: `Derived.Test(bool)' hides inherited member `BaseInterface.Test(bool)'. Use the new keyword if hiding was intended
// Line: 9
// Compiler options: -warnaserror -warn:2 -t:library

interface BaseInterface {
	void Test (bool arg);
}

interface Derived : BaseInterface {
	void Test (bool arg);
}
</string>
    <string>// CS0108: `IMutableSequence.this[int]' hides inherited member `ISequence.this[int]'. Use the new keyword if hiding was intended
// Line: 15
// Compiler options: -warnaserror -warn:2

public interface ISequence
{
	object this [int index] 
	{
		get;
	}
}

public interface IMutableSequence : ISequence
{
	object this [int index] 
	{
		get;
		set;
	}
}</string>
    <string>// CS0108: `B.D' hides inherited member `A.D'. Use the new keyword if hiding was intended
// Line: 15
// Compiler options: -warnaserror -warn:2

public class B : A
{
	public delegate void D ();
}

public class A
{
	public int D;
}
</string>
    <string>// CS0108: `Derived.F()' hides inherited member `Base.F()'. Use the new keyword if hiding was intended
// Line:
// Compiler options: -warnaserror -warn:2

class Base {
	public void F () {}
}

class Derived : Base {
	void F () {}
}
</string>
    <string>// CS0108: `Bar.this[int, int]' hides inherited member `Foo.this[int, int]'. Use the new keyword if hiding was intended
// Line: 15
// Compiler options: -warnaserror -warn:2

public class Foo
{
        public long this [int start, int count] {
                set {
                }
        }
}

public class Bar : Foo
{
        public virtual long this [int i, int length] {
                set {
                }
        }
}
</string>
    <string>// CS0108: `BaseConcrete.InnerDerived&lt;T&gt;()' hides inherited member `BaseGeneric&lt;string&gt;.InnerDerived'. Use the new keyword if hiding was intended
// Line: 14
// Compiler options: -warn:2 -warnaserror

class BaseGeneric&lt;T&gt;
{
	public class InnerDerived
	{
	}
}

class BaseConcrete : BaseGeneric&lt;string&gt;
{
	public void InnerDerived&lt;T&gt; ()
	{
	}
}
</string>
    <string>// CS0108: `Derived.Action&lt;U&gt;' hides inherited member `Base.Action&lt;U&gt;'. Use the new keyword if hiding was intended
// Line: 12
// Compiler options: -warnaserror

public abstract class Base
{
	public delegate void Action&lt;U&gt; (U val);
}

public class Derived : Base
{
	public delegate void Action&lt;U&gt; (U i);
}
</string>
    <string>// CS0108: `Derived.EE' hides inherited member `Base.EE'. Use the new keyword if hiding was intended
// Line: 12
// Compiler options: -warnaserror -warn:2

class Base {
	public enum EE {
            Item
        };
}

class Derived : Base {
        public int EE;
}
</string>
    <string>// CS0108: `Derived.Prop(bool)' hides inherited member `Base.Prop'. Use the new keyword if hiding was intended
// Line: 13
// Compiler options: -warnaserror -warn:2

class Base {
	public bool Prop = false;
}

class Derived : Base {
        public void Prop (bool b) {}
}
</string>
    <string>// CS0108: `Derived.Prop' hides inherited member `Base.Prop(int)'. Use the new keyword if hiding was intended
// Line: 10
// Compiler options: -warnaserror -warn:2

class Base {
	public void Prop (int a) {}
}

class Derived : Base {
	public int Prop {
            get {
                return 0;
            }
        }
}
</string>
    <string>// CS0108: `Derived.Prop' hides inherited member `Base.Prop'. Use the new keyword if hiding was intended
// Line: 14
// Compiler options: -warnaserror -warn:2

class Base {
	public int Prop {
            get {
                return 0;
            }
        }    
}

class Derived : Base {
	public bool Prop = false;
}
</string>
    <string>// CS0108: `Libs.MyLib' hides inherited member `Foo.MyLib'. Use the new keyword if hiding was intended
// Line: 18
// Compiler options: -warnaserror -warn:2

using System;
using System.Runtime.InteropServices;
 
class Test {
	[DllImport (Libs.MyLib)]
	private static extern void foo ();
 
	public static void Main ()
	{
	}
}
 
class Libs : Foo {
	internal const string MyLib = "SomeLibrary";
}
class Foo {
	internal const string MyLib = "Foo";
}
</string>
    <string>// CS0108: `Derived.Prop' hides inherited member `Base.Prop'. Use the new keyword if hiding was intended
// Line: 10
// Compiler options: -warnaserror -warn:2

class Base {
	public bool Prop = false;
}

class Derived : Base {
	public int Prop {
            get {
                return 0;
            }
        }
}
</string>
    <string>// CS0108: `B.Adapter' hides inherited member `A.Adapter'. Use the new keyword if hiding was intended
// Line: 14
// Compiler options: -warnaserror -warn:2

class A
{
	public abstract class Adapter
	{
	}
}

class B : A
{
	public int Adapter { get; set; }
}</string>
    <string>// CS0108: `Derived.Method()' hides inherited member `Base.Method()'. Use the new keyword if hiding was intended
// Line: 11
// Compiler options: -warnaserror -warn:2

class Base {
	public bool Method () { return false; }
        public void Method (int a) {}
}

class Derived : Base {
        public void Method () {}
}
</string>
  </Examples>
</ErrorDocumentation>