public static void FindFirstInSelection(int offset, int length, IProgressMonitor monitor)
        {
            foundAtLeastOneItem = false;
            textSelection = null;
            SetSearchOptions(monitor);

            if (find == null ||
                SearchOptions.FindPattern == null ||
                SearchOptions.FindPattern.Length == 0) {
                return;
            }

            if (!find.SearchStrategy.CompilePattern(monitor)) {
                find.Reset();
                lastResult = null;
                return;
            }

            textSelection = new TextSelection(offset, length);
            FindNextInSelection(monitor);
        }