public void Update()
    {
        // Do real text update here, so it can never be done more than once per frame.
        if (dirty)
        {
            dirty = false;

            Matches.Clear();
            var suggested = Commands.GetAutocompleteCommand(Keyword);

            foreach (var thing in suggested)
            {
                foreach (var comm in Commands.Loaded[thing.CommandName])
                {
                    Matches.Add(comm);
                }
            }

            str.Clear();
            const string WHITESPACE = "  ";

            int index = 0;
            foreach (var item in Matches)
            {
                string text = item.ToString();
                string comm = RichText.Highlight(text, Keyword, Color.black, true);
                str.Append(comm);
                str.Append(WHITESPACE);
                index++;
            }

            Text.text = str.ToString();
            str.Clear();
        }
    }