<?xml version="1.0"?>
<ErrorDocumentation xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <ErrorName>CS0183</ErrorName>
  <Examples>
    <string>// CS0183: The given expression is always of the provided (`T') type
// Line: 10
// Compiler options: -warnaserror -warn:1

class X
{
	static bool Foo&lt;T&gt; () where T : struct
	{
		T o = default (T);
		return o is T;
	}
}
</string>
    <string>// CS0183: The given expression is always of the provided (`object') type
// Line: 10
// Compiler options: -warnaserror -warn:1

class X
{
	public void Foo ()
	{
		int x = 1;
		if (x is object) {
		}
	}
}
</string>
    <string>// CS0183: The given expression is always of the provided (`int') type
// Line:
// Compiler options: -warnaserror -warn:1

class X {

	static void Main ()
	{
		int i = 5;

		if (i is int){
		}
	}
}
</string>
    <string>// CS0183: The given expression is always of the provided (`int?') type
// Line: 10
// Compiler options: -warnaserror -warn:1

class X
{
	public void Foo ()
	{
		int? x = null;
		if (x is int?) {
		}
	}
}
</string>
    <string>// CS0183: The given expression is always of the provided (`System.Enum') type
// Line: 13
// Compiler options: -warnaserror

using System;

enum E { Item };

class C
{
	static bool Check (E e)
	{
		return e is Enum;
	}
}
</string>
    <string>// CS0183: The given expression is always of the provided (`U') type
// Line: 14
// Compiler options: -warnaserror

abstract class A&lt;T&gt;
{
	public abstract bool Foo&lt;U&gt; (U arg) where U : T;
}

class B : A&lt;int&gt;
{
	public override bool Foo&lt;U&gt; (U arg)
	{
		return arg is U;
	}
}
</string>
  </Examples>
</ErrorDocumentation>