public NewOverrideCompletionData(ProjectDom dom, MonoDevelop.Ide.Gui.TextEditor editor, int declarationBegin, IType type, IMember member)
            : base(null)
        {
            this.editor = editor;
            this.type   = type;
            this.member = member;

            this.initialOffset = editor.CursorPosition;
            this.declarationBegin = declarationBegin;
            this.unit = type.CompilationUnit;
            this.GenerateBody = true;
            string declarationText = editor.GetText (declarationBegin, initialOffset);
            insertPrivate = declarationText.Contains ("private");
            insertSealed  = declarationText.Contains ("sealed");

            this.indent = GetIndentString (editor, editor.CursorPosition);
            this.Icon = member.StockIcon;
            this.DisplayText = ambience.GetString (member, OutputFlags.IncludeParameters | OutputFlags.IncludeGenerics | OutputFlags.IncludeMarkup | OutputFlags.HideExtensionsParameter);
            this.CompletionText = member.Name;

            ResolveReturnTypes ();
        }
        internal static string CreateWrapperClassForMember(IMember member, string fileName, TextEditor editor)
        {
            if (member == null)
                return "";
            StringBuilder result = new StringBuilder ();
            int startLine = member.Location.Line;
            int endLine   = member.Location.Line;
            if (!member.BodyRegion.IsEmpty)
                endLine = member.BodyRegion.End.Line + 1;
            string text;
            result.Append ("class " + member.DeclaringType.Name + " {");
            if (editor != null) {
                int col, maxLine;
                editor.GetLineColumnFromPosition (editor.TextLength - 1, out col, out maxLine);
                endLine = System.Math.Max (endLine, maxLine);

                int endPos = editor.GetPositionFromLineColumn (endLine, editor.GetLineLength (endLine));
                if (endPos < 0)
                    endPos = editor.TextLength;
                text = editor.GetText (editor.GetPositionFromLineColumn (startLine, 0), endPos);
            } else {
                Mono.TextEditor.Document doc = new Mono.TextEditor.Document ();
                doc.Text = File.ReadAllText (fileName) ?? "";
                startLine = Math.Min (doc.LineCount, Math.Max (1, startLine));
                endLine   = Math.Min (doc.LineCount, Math.Max (1, endLine));
                int startOffset = doc.LocationToOffset (startLine - 1, 0);
                text = doc.GetTextAt (startOffset, doc.LocationToOffset (endLine  - 1, doc.GetLine (endLine - 1).EditableLength) - startOffset);
            }
            if (!string.IsNullOrEmpty (text))
                result.Append (text);
            result.Append ("}");

            return result.ToString ();
        }