using System;

namespace BrokenOverrideProperty
{
	abstract class BaseClass
	{
		protected BaseClass (string text)
		{
			Whatever = text;
		}

		public virtual string Whatever { get; set; }
	}

	class DerivedClass : BaseClass
	{
		public string CalledValue;

		public DerivedClass (string text) : base (text)
		{
		}

		public override string Whatever {
			get {
				return "DerivedClass";
			}
			set {
				CalledValue = value;
				Console.WriteLine ("set called with {0}", value);
			}
		}
	}

	class MainClass
	{
		public static int Main ()
		{
			var klass = new DerivedClass ("test-value");
			if (klass.CalledValue != "test-value")
				return 1;

			return 0;
		}
	}
}