//strongly typed window accessor
        public override void AwakeFromNib()
        {
            // add the searchMenu to this control, allowing recent searches to be added.
            //
            // note that we could build this menu inside our nib, but for clarity we're
            // building the menu in code to illustrate the use of tags:
            //		NSSearchFieldRecentsTitleMenuItemTag, NSSearchFieldNoRecentsMenuItemTag, etc.
            //
            if (searchField.RespondsToSelector(new Selector("setRecentSearches:")))
            {
                NSMenu searchMenu = new NSMenu("Search Menu")
                {
                    AutoEnablesItems = true
                };

                var item = new NSMenuItem("Custom", "", (o, e) => actionMenuItem());
                searchMenu.InsertItematIndex(item, 0);

                var separator = NSMenuItem.SeparatorItem;
                searchMenu.InsertItematIndex(separator, 1);

                var recentsTitleItem = new NSMenuItem("Recent Searches", "");
                // tag this menu item so NSSearchField can use it and respond to it appropriately
                recentsTitleItem.Tag = NSSearchFieldRecentsTitleMenuItemTag;
                searchMenu.InsertItematIndex(recentsTitleItem, 2);

                var norecentsTitleItem = new NSMenuItem("No recent searches", "");
                // tag this menu item so NSSearchField can use it and respond to it appropriately
                norecentsTitleItem.Tag = NSSearchFieldNoRecentsMenuItemTag;
                searchMenu.InsertItematIndex(norecentsTitleItem, 3);

                var recentsItem = new NSMenuItem("Recents", "");
                // tag this menu item so NSSearchField can use it and respond to it appropriately
                recentsItem.Tag = NSSearchFieldRecentsMenuItemTag;
                searchMenu.InsertItematIndex(recentsItem, 4);

                var separatorItem = NSMenuItem.SeparatorItem;
                // tag this menu item so NSSearchField can use it, by hiding/show it appropriately:
                separatorItem.Tag = NSSearchFieldRecentsTitleMenuItemTag;
                searchMenu.InsertItematIndex(separatorItem, 5);

                var clearItem = new NSMenuItem("Clear", "");
                // tag this menu item so NSSearchField can use it
                clearItem.Tag = NSSearchFieldClearRecentsMenuItemTag;
                searchMenu.InsertItematIndex(clearItem, 6);

                var searchCell = searchField.Cell;
                searchCell.MaximumRecents     = 20;
                searchCell.SearchMenuTemplate = searchMenu;

                // with lamda
                //searchField.ControlTextDidChange += (o,e) => controlTextDidChange((NSNotification)o);
                // or delegate
                searchField.Changed += delegate(object sender, EventArgs e) {
                    handleTextDidChange((NSNotification)sender);
                };
                searchField.DoCommandBySelector = handleCommandSelectors;
                searchField.GetCompletions      = handleFilterCompletions;
            }

            // build the list of keyword strings for our type completion dropdown list in NSSearchField
            builtInKeywords = new List <string>()
            {
                "Favorite", "Favorite1", "Favorite11", "Favorite3", "Vacations1", "Vacations2",
                "Hawaii", "Family", "Important", "Important2", "Personal"
            };
        }