public bool Inspect(string name, string path, object data,
                            Type type  = null,
                            IMark mark = null,
                            Action <object> OnValueChanged = null)
        {
            if (inInspector)
            {
                return(InspectInternal(name, path, data, type, mark, OnValueChanged));
            }

            try
            {
                inInspector = true;
                GUITools.Setup();
                return(InspectInternal(name, path, data, type, mark, OnValueChanged));
            }
            finally
            {
                inInspector = false;
            }
        }