public NSArray ControlTextViewCompletionsForPartialWordRangeIndexOfSelectedItem(NSControl control, NSTextView textView, NSArray words, NSRange charRange, ref int index) { NSMutableArray matches; NSString partialString; NSArray keywords; int i; uint count; NSString str; partialString = textView.String.SubstringWithRange(charRange); keywords = this.AllKeywords(); count = keywords.Count; matches = new NSMutableArray(); // find any match in our keyword array against what was typed for (i = 0; i < count; i++) { str = keywords[i].CastTo<NSString>(); if (str.RangeOfStringOptionsRange(partialString, NSStringCompareOptions.NSAnchoredSearch | NSStringCompareOptions.NSCaseInsensitiveSearch, NSRange.NSMakeRange(0, str.Length)).location != NSUInteger.NSNotFound) { matches.AddObject(str); } } matches.SortUsingSelector(ObjectiveCRuntime.Selector("compare:")); return matches; }