class X {

	static object get_non_null ()
	{
		return new X ();
	}

	static object get_null ()
	{
		return null;
	}
	
	static int Main ()
	{
		int a = 5;
		object o;
		decimal d = 0M;
		
		//
		// compile time
		//
		if (!(get_non_null () is object))
			return 1;

		if (get_null () is object)
			return 2;

		if (!(a is object))
			return 3;

		//
		// explicit reference
		//
		if (null is object)
			return 4;

		o = a;
		if (!(o is int))
			return 5;

		if (d is int)
			return 6;

		System.Console.WriteLine ("Is tests pass");
		return 0;
	}
}
