using System;

namespace InternalAccess
{
	public abstract class Base
	{
		internal Base () { }
		internal string Prop { get { return "A"; } }
	}

	public class DerivedInternalExample : Base
	{
		public DerivedInternalExample () { }
		internal new string Prop { get { return "D"; } }
	}

	public class DerivedProtectedExample : Base
	{
		public DerivedProtectedExample () { }
		protected new string Prop { get { return "E"; } }
	}

	class MainClass
	{
		public static int Main ()
		{
			DerivedInternalExample die = new DerivedInternalExample ();
			if (die.Prop != "D")
				return 1;

			DerivedProtectedExample dpe = new DerivedProtectedExample ();
			if (dpe.Prop != "A")
				return 2;

			return 0;
		}
	}
}