//
// Really lame test, but it should be fine for now
//
#define TEST

#region "dunno"
#endregion

#if FALSE
	#region Fields
		#if B
			int a;
		#else
			bool a;
		#endif
	#endregion
#endif

#if FLAG_FALSE
        #pragma foo
        namespace ns1
#else
        #if FLAG_FALSE
                        #if FLAG_FALSE
                                #error No error
                                namespace ns2
                        #else
                                #line aa
                                namespace ns3
                        #endif
        #else
                #if FLAG_TRUE
                        namespace ns4
                #elif FLAG_FALSE
                        namespace ns41
                #else
                        namespace ns5
                #endif
        #endif
#endif
{
        public class Y
        {
                public Y()
                {
                }

		public void Run () {}
        }
}

#if (X)
#endif

#if YY
//#errro this should not be printed // It used to compile under 1.x csc, but never under 2.x csc.
#if X
#elif Y
#else
#endif
#else
class X {
	public static int Main ()
	{
#if (TEST)
		ns5.Y y = new ns5.Y ();

		y.Run ();
		return 0;
#endif
	}
}
#endif