private void LoadAsset(ScriptableObject asset)
        {
            var settings = ProjectUtility.GetProjectSettings <ActionGraphGlobalSettings>();

            if (settings != null)
            {
                var graphView = rootVisualElement.Q <ActionGraphView>("graphView");
                if (asset is ActionAsset actionAsset)
                {
                    if (ActionDefinitionAsset.Load(actionAsset.actionId, out var definitionAsset))
                    {
                        graphView.LoadModule(new ActionModule(actionAsset, definitionAsset, definitionAsset.Name));
                        EditorPrefs.SetString(PrefKey, JsonConvert.SerializeObject(graphView.model.context));
                    }
                    else
                    {
                        Debug.LogError($"Unknown Action Type with guid '{actionAsset.actionId}' in {actionAsset.name}");
                    }
                }
                else
                {
                    var actionModules = new List <ActionModule>();

                    foreach (var fieldInfo in asset.GetType().GetSerializableFields(fieldInfo => typeof(ActionAsset).IsAssignableFrom(fieldInfo.FieldType)))
                    {
                        var attr = fieldInfo.GetCustomAttribute <ActionTypeAttribute>();
                        if (attr != null && ActionDefinitionAsset.Load(attr.type, out var definitionAsset))
                        {
                            actionModules.Add(new ActionModule((ActionAsset)fieldInfo.GetValue(asset) ?? settings.CreateTemporaryActionAsset(definitionAsset.id), definitionAsset, $"{fieldInfo.Name} [{definitionAsset.Name}]"));
                        }
                    }
                    if (actionModules.Count > 0)
                    {
                        graphView.LoadModules(actionModules, asset);
                        EditorPrefs.SetString(PrefKey, JsonConvert.SerializeObject(graphView.model.context));
                    }
                    else
                    {
                        Debug.LogError("No Action Assets found!");
                    }
                }
            }
        }