def invokeCompletionIfAvailable(self, requestedByUser=False):
        """Invoke completion, if available. Called after text has been typed in qpart
        Returns True, if invoked
        """
        if self._qpart.completionEnabled and self._wordSet is not None:
            wordBeforeCursor = self._wordBeforeCursor()
            wholeWord = wordBeforeCursor + self._wordAfterCursor()

            forceShow = requestedByUser or self._completionOpenedManually
            if wordBeforeCursor:
                if len(wordBeforeCursor) >= self._qpart.completionThreshold or forceShow:
                    if self._widget is None:
                        model = _CompletionModel(self._wordSet)
                        model.setData(wordBeforeCursor, wholeWord)
                        if self._shouldShowModel(model, forceShow):
                            self._createWidget(model)
                            return True
                    else:
                        self._widget.model().setData(wordBeforeCursor, wholeWord)
                        if self._shouldShowModel(self._widget.model(), forceShow):
                            self._widget.updateGeometry()

                            return True

        self._closeCompletion()
        return False
Invoke completion, if available. Called after text has been typed in qpart
        Returns True, if invoked