public void Accept(ITextControl textControl, TextRange nameRange, LookupItemInsertType lookupItemInsertType, Suffix suffix, ISolution solution, bool keepCaretStill) { /* PLEASE DO NOT OBSERVE THIS */ string text; if (lookupItemInsertType == LookupItemInsertType.Insert) { if (Info.InsertText.IndexOf(')') == -1) { Info.InsertText += ")"; } text = Info.Text + Info.InsertText; textControl.Document.ReplaceText(Info.Ranges.InsertRange.JoinRight(nameRange), text); } else { if (Info.ReplaceText.IndexOf(')') == -1) { Info.ReplaceText += ")"; } text = Info.Text + Info.ReplaceText; textControl.Document.ReplaceText(Info.Ranges.ReplaceRange.JoinRight(nameRange), text); } var tailType = Info.TailType; if (tailType != null) { LookupUtil.InsertTailType(textControl, nameRange.StartOffset + text.Length, tailType, solution, emulateTypingOfSpace: false); } /* PLEASE DO NOT OBSERVE THIS */ var psiServices = solution.GetPsiServices(); psiServices.Files.CommitAllDocuments(); var referenceExpression = TextControlToPsi.GetElement <IReferenceExpression>(solution, textControl.Document, nameRange.StartOffset); if (referenceExpression == null || myMethods.Count == 0) { return; } var existingArgumentsCount = GetExistingArgumentsCount(referenceExpression); var referencePointer = referenceExpression.CreateTreeElementPointer(); InsertQualifierAsArgument(referenceExpression, existingArgumentsCount, textControl); psiServices.Files.CommitAllDocuments(); var reference1 = referencePointer.GetTreeNode(); if (reference1 != null) { var textRange = reference1.NameIdentifier.GetDocumentRange().TextRange; var pointers = Info.DeclaredElementPointers.ToList(); #if RESHARPER92 var caretPositionMarker = RangeMarker.InvalidMarker; LookupUtil.BindRange(solution, textControl, textRange, pointers, reference1.Language, ref caretPositionMarker); #else LookupUtil.BindRange(solution, textControl, textRange, pointers, reference1.Language); #endif psiServices.Files.CommitAllDocuments(); var reference3 = referencePointer.GetTreeNode(); if (reference3 != null) { ApplyQualifierCodeStyle(reference3); psiServices.Files.CommitAllDocuments(); var reference2 = referencePointer.GetTreeNode(); if (reference2 != null) { PlaceCaretAfterCompletion(textControl, reference2, existingArgumentsCount, lookupItemInsertType); } } } }