public void RefreshQueryResults()
        {
            if (string.IsNullOrEmpty(query))
            {
                return;
            }
            executor.Code = query;
            var objects = executor.Execute();

            PersistentReferenceCollection.Update(objects);
        }
 /// <summary>
 /// Run the GoQL query attached to this group, adding any new members that are discovered.
 /// </summary>
 public void RefreshQueryResults()
 {
     executor.Code = query;
     members.Clear();
     members.AddRange(executor.Execute());
 }
        void OnGUI()
        {
            var group = SelectionGroupManager.instance.GetGroup(groupId);

            using (var cc = new EditorGUI.ChangeCheckScope())
            {
                GUILayout.Label("Selection Group Properties", EditorStyles.largeLabel);
                group.name  = EditorGUILayout.TextField("Group Name", group.name);
                group.color = EditorGUILayout.ColorField("Color", group.color);
                EditorGUILayout.LabelField("GameObject Query");
                var q = group.query;
                group.query  = EditorGUILayout.TextField(group.query);
                refreshQuery = refreshQuery || (q != group.query);
                if (refreshQuery)
                {
                    var code = GoQL.Parser.Parse(group.query, out GoQL.ParseResult parseResult);
                    if (parseResult == GoQL.ParseResult.OK)
                    {
                        executor.Code = group.query;
                        var objects = executor.Execute();
                        message = $"{objects.Length} results.";
                        group.Clear();
                        group.Add(objects);
                        parentWindow.Repaint();
                    }
                    else
                    {
                        message = parseResult.ToString();
                    }
                    refreshQuery = false;
                }
                if (message != string.Empty)
                {
                    GUILayout.Space(5);
                    EditorGUILayout.HelpBox(message, MessageType.Info);
                }
                GUILayout.Space(5);

                GUILayout.BeginVertical("box");
                GUILayout.Label("Enabled Toolbar Buttons", EditorStyles.largeLabel);
                foreach (var i in TypeCache.GetMethodsWithAttribute <SelectionGroupToolAttribute>())
                {
                    var attr     = i.GetCustomAttribute <SelectionGroupToolAttribute>();
                    var enabled  = group.enabledTools.Contains(attr.ToolID);
                    var content  = EditorGUIUtility.IconContent(attr.icon);
                    var _enabled = EditorGUILayout.ToggleLeft(content, enabled, "button");
                    if (enabled && !_enabled)
                    {
                        group.enabledTools.Remove(attr.ToolID);
                    }
                    if (!enabled && _enabled)
                    {
                        group.enabledTools.Add(attr.ToolID);
                    }
                }
                GUILayout.EndVertical();
                if (cc.changed)
                {
                    SelectionGroupManager.instance.SetIsDirty();
                }
                showDebug = GUILayout.Toggle(showDebug, "Show Debug Info", "button");
                if (showDebug)
                {
                    if (debugInformation == null)
                    {
                        debugInformation = new SelectionGroupDebugInformation(group);
                    }
                    EditorGUILayout.TextArea(debugInformation.text);
                }
                else
                {
                    debugInformation = null;
                }
            }
        }