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);
                        }
                    }
                }
            }