void CallbackTests()
    {
        EventAssetArgument arg = new EventAssetArgument
        {
            data            = "Hello",
            successCallback = data =>
            {
                Debug.Log(data);
            },
            failCallback = error =>
            {
                Debug.Log(error);
            }
        };

        eventWithCallbacks.Raise(arg);
    }
    public override void OnInspectorGUI()
    {
        AssetEvent obj = (AssetEvent)target;

        serializedObject.Update();

        obj.var = (VarAsset)EditorGUILayout.ObjectField("Default Var", obj.var, typeof(VarAsset), true);

        listenerElements.DoLayoutList();

        if (obj.var != null && GUILayout.Button("RaiseWithVar"))
        {
            obj.RaiseWithVar();
        }

        if (GUILayout.Button("RaiseWithNoParameter"))
        {
            obj.Raise();
        }

        serializedObject.ApplyModifiedProperties();

        #region Debug


        GUILayout.Label("Listeners: ");

        for (int i = 0; i < obj.EventListeners.Count; i++)
        {
            var listener = obj.EventListeners[i];
            GUILayout.Label($"{i}");

            if (listener.argResponse != null)
            {
                GUILayout.Space(10f);
                GUILayout.Label("Arg Responce Handlers: ");
                for (int indx = 0; indx < listener.argResponse.GetPersistentEventCount(); indx++)
                {
                    GUILayout.Space(5f);
                    EditorGUI.BeginDisabledGroup(true);
                    EditorGUILayout.ObjectField("Script:", listener.argResponse.GetPersistentTarget(indx), typeof(Object), false);
                    EditorGUI.EndDisabledGroup();
                    GUILayout.Label($"Method: {listener.argResponse.GetPersistentMethodName(indx)}");
                }
            }

            if (listener.objectResponce != null)
            {
                GUILayout.Space(10f);
                GUILayout.Label("Object Responce Handlers: ");
                for (int indx = 0; indx < listener.objectResponce.GetPersistentEventCount(); indx++)
                {
                    GUILayout.Space(5f);
                    EditorGUI.BeginDisabledGroup(true);
                    EditorGUILayout.ObjectField("Script:", listener.objectResponce.GetPersistentTarget(indx), typeof(Object), false);
                    EditorGUI.EndDisabledGroup();
                    GUILayout.Label($"Method: {listener.objectResponce.GetPersistentMethodName(indx)}");
                }
            }
        }

        #endregion
    }