private void OnDisable()
 {
     visible    = false;
     s_Instance = null;
 }
        public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
        {
            if (setNextObjectValue != null)
            {
                property.objectReferenceValue = setNextObjectValue;
                setNextObjectValue            = null;
                if (CallTreeWindow.visible)
                {
                    CallTreeWindow.Refresh();
                }
            }

            if (property.objectReferenceValue == null)
            {
                GUI.backgroundColor = Color.red;
                EditorGUI.DrawRect(position, new Color(1.0f, 0, 0, 0.25f));
            }

            var pickRect = new Rect(position);

            pickRect.xMin  = pickRect.xMax - 184;
            pickRect.xMax -= 30;

            var gotoRect = new Rect(position);

            gotoRect.xMin = gotoRect.xMax - 24;

            var objRect = new Rect(position);

            objRect.xMax -= 188;



            var obj = EditorGUI.ObjectField(objRect, property.objectReferenceValue, typeof(Callable), true);

            if (GUI.changed)
            {
                property.objectReferenceValue = obj;
            }


            if (property.objectReferenceValue != null)
            {
                if (GUI.Button(gotoRect, ">"))
                {
                    Selection.activeObject = property.objectReferenceValue;
                }

                if (GUI.Button(pickRect, (property.objectReferenceValue as Callable).Name, EditorStyles.popup))
                {
                    ShowMenu(property);
                }
            }
            else
            {
                EditorGUI.BeginDisabledGroup(true);
                GUI.Label(pickRect, "No Callable Selected", EditorStyles.popup);
                EditorGUI.EndDisabledGroup();
            }

            GUI.backgroundColor = Color.white;
        }