/// <summary>
        /// Initializes a new instance of the <see cref="TestExecutionContext"/> class.
        /// </summary>
        /// <param name="other">An existing instance of TestExecutionContext.</param>
        public TestExecutionContext(TestExecutionContext other)
        {
            this.prior = other;

            this.currentTest     = other.currentTest;
            this.currentResult   = other.currentResult;
            this.testObject      = other.testObject;
            this.workDirectory   = other.workDirectory;
            this.listener        = other.listener;
            this.stopOnError     = other.stopOnError;
            this.testCaseTimeout = other.testCaseTimeout;

#if !NETCF && !SILVERLIGHT
            this.outWriter   = other.outWriter;
            this.errorWriter = other.errorWriter;
            this.traceWriter = other.traceWriter;
            this.tracing     = other.tracing;
#endif

#if !NUNITLITE
            this.logging          = other.logging;
            this.currentDirectory = Environment.CurrentDirectory;
            this.logCapture       = other.logCapture;
            this.currentPrincipal = Thread.CurrentPrincipal;
#endif
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="TestExecutionContext"/> class.
        /// </summary>
        public TestExecutionContext()
        {
            this.prior           = null;
            this.testCaseTimeout = 0;

#if !NETCF && !SILVERLIGHT
            this.outWriter   = Console.Out;
            this.errorWriter = Console.Error;
            this.traceWriter = null;
            this.tracing     = false;
#endif

#if !NUNITLITE
            this.logging          = false;
            this.currentDirectory = Environment.CurrentDirectory;
            this.logCapture       = new Log4NetCapture();
            this.currentPrincipal = Thread.CurrentPrincipal;
#endif
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="TestExecutionContext"/> class.
        /// </summary>
        /// <param name="other">An existing instance of TestExecutionContext.</param>
		public TestExecutionContext( TestExecutionContext other )
		{
			this.prior = other;

            this.currentTest = other.currentTest;
            this.currentResult = other.currentResult;
            this.testObject = other.testObject;
			this.workDirectory = other.workDirectory;
            this.listener = other.listener;
            this.stopOnError = other.stopOnError;
            this.testCaseTimeout = other.testCaseTimeout;

#if !NETCF
            this.currentCulture = CultureInfo.CurrentCulture;
            this.currentUICulture = CultureInfo.CurrentUICulture;
#endif

#if !NETCF && !SILVERLIGHT
			this.outWriter = other.outWriter;
			this.errorWriter = other.errorWriter;
            this.traceWriter = other.traceWriter;
            this.tracing = other.tracing;
#endif

#if !NUNITLITE
			this.logging = other.logging;
			this.currentDirectory = Environment.CurrentDirectory;
            this.logCapture = other.logCapture;
            this.currentPrincipal = Thread.CurrentPrincipal;
#endif
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="TestExecutionContext"/> class.
        /// </summary>
        public TestExecutionContext()
		{
			this.prior = null;
            this.testCaseTimeout = 0;

#if !NETCF
            this.currentCulture = CultureInfo.CurrentCulture;
            this.currentUICulture = CultureInfo.CurrentUICulture;
#endif

#if !NETCF && !SILVERLIGHT
			this.outWriter = Console.Out;
			this.errorWriter = Console.Error;
            this.traceWriter = null;
            this.tracing = false;
#endif

#if !NUNITLITE
			this.logging = false;
			this.currentDirectory = Environment.CurrentDirectory;
            this.logCapture = new Log4NetCapture();
            this.currentPrincipal = Thread.CurrentPrincipal;
#endif
        }