protected virtual bool search(StringSearchMatcher search) { object pos = GetPosition(); for (; ; ) { var val = GetCurrent(); if (val != null && search.Matches(val.ToString())) { SetFoundPosition(); return true; } if (!IncreasePosition()) break; } ResetStartPosition(pos); return false; }