internal static void InitEnvironment(ExampleCode exampleCode)
        {
            lock (mInitLock)
            {
                if (mLastSandbox != null)
                {
                    mLastSandbox.StopWatching();
                    DeleteAllFolder(mLastSandbox.Path);
                }
                
                var sandbox = new ExampleSandbox(Path.Combine(TemporaryFolder, Path.GetFileNameWithoutExtension(exampleCode.OriginalFileName)));
                mLastSandbox = sandbox;

                EnsureDirectoryExists(sandbox.Path);
                if (Environment.CurrentDirectory != sandbox.Path)
                {
                    if (mPreviousCurrentDirectory == null)
                        mPreviousCurrentDirectory = Environment.CurrentDirectory;

                    Environment.CurrentDirectory = sandbox.Path;
                }

                foreach (var file in exampleCode.Files)
                {
                    if (file.Status == ExampleFile.FileType.InputFile)
                        File.WriteAllText(Path.Combine(sandbox.Path, file.Filename), file.Contents, Encoding.UTF8);
                }

                sandbox.Created += (sender, args) => exampleCode.OnNewFileCreated(args.FullPath);
                sandbox.StartWatching();

            }
        }
        internal static void InitEnvironment(ExampleCode exampleCode)
        {
            lock (mInitLock) {
                if (mLastSandbox != null)
                {
                    mLastSandbox.StopWatching();
                    DeleteAllFolder(mLastSandbox.Path);
                }

                var sandbox =
                    new ExampleSandbox(Path.Combine(TemporaryFolder,
                                                    Path.GetFileNameWithoutExtension(exampleCode.OriginalFileName)));
                mLastSandbox = sandbox;

                EnsureDirectoryExists(sandbox.Path);
                if (Environment.CurrentDirectory != sandbox.Path)
                {
                    if (mPreviousCurrentDirectory == null)
                    {
                        mPreviousCurrentDirectory = Environment.CurrentDirectory;
                    }

                    Environment.CurrentDirectory = sandbox.Path;
                }

                foreach (var file in exampleCode.Files)
                {
                    if (file.Status == ExampleFile.FileType.InputFile)
                    {
                        File.WriteAllText(Path.Combine(sandbox.Path, file.Filename), file.Contents, Encoding.UTF8);
                    }
                }

                sandbox.Created += (sender, args) => exampleCode.OnNewFileCreated(args.FullPath);
                sandbox.StartWatching();
            }
        }