Lucene.Net.Analysis.BaseCharFilter.Correct C# (CSharp) Method

Correct() protected method

protected Correct ( int currentOff ) : int
currentOff int
return int
        protected internal override int Correct(int currentOff)
        {
            if (offsets == null || currentOff < offsets[0])
            {
                return currentOff;
            }

            int hi = size - 1;
            if (currentOff >= offsets[hi])
                return currentOff + diffs[hi];

            int lo = 0;
            int mid = -1;

            while (hi >= lo)
            {
                mid = Number.URShift(lo + hi, 1);
                if (currentOff < offsets[mid])
                    hi = mid - 1;
                else if (currentOff > offsets[mid])
                    lo = mid + 1;
                else
                    return currentOff + diffs[mid];
            }

            if (currentOff < offsets[mid])
                return mid == 0 ? currentOff : currentOff + diffs[mid - 1];
        	return currentOff + diffs[mid];
        }