public ProjectedDocumentContext(TextEditor projectedEditor, DocumentContext originalContext)
        {
            if (projectedEditor == null)
            {
                throw new ArgumentNullException("projectedEditor");
            }
            if (originalContext == null)
            {
                throw new ArgumentNullException("originalContext");
            }
            this.projectedEditor = projectedEditor;
            this.originalContext = originalContext;

            if (originalContext.Project != null)
            {
                var originalProjectId = IdeApp.TypeSystemService.GetProjectId(originalContext.Project);
                if (originalProjectId != null)
                {
                    var originalProject = IdeApp.TypeSystemService.Workspace.CurrentSolution.GetProject(originalProjectId);
                    if (originalProject != null)
                    {
                        projectedDocument = originalProject.AddDocument(
                            projectedEditor.FileName,
                            projectedEditor
                            );
                    }
                }
            }

            projectedEditor.TextChanged += delegate(object sender, TextChangeEventArgs e) {
                if (projectedDocument != null)
                {
                    projectedDocument = projectedDocument.WithText(projectedEditor);
                }
                ReparseDocument();
            };

            ReparseDocument();
        }