public BlackboardVariablePropertyView(Store store, IVariableDeclarationModel variableDeclarationModel,
                                              Blackboard.RebuildCallback rebuildCallback, Stencil stencil)
            : base(variableDeclarationModel, rebuildCallback)
        {
            m_Store   = store;
            m_Stencil = stencil;

            RegisterCallback <AttachToPanelEvent>(OnAttachToPanel);
            RegisterCallback <DetachFromPanelEvent>(OnDetachFromPanel);

            if (variableDeclarationModel.VariableType != VariableType.FunctionVariable &&
                variableDeclarationModel.VariableType != VariableType.GraphVariable)
            {
                return;
            }

            if (!variableDeclarationModel.InitializationModel?.NodeAssetReference)
            {
                if (stencil.GetVariableInitializer().RequiresInitialization(variableDeclarationModel))
                {
                    m_InitializationElement = new Button(OnInitializationButton)
                    {
                        text = "Create Init value"
                    };
                    m_InitializationElement.AddToClassList("rowButton");
                }
            }
            else
            {
                m_InitializationObject = new SerializedObject(variableDeclarationModel.InitializationModel.NodeAssetReference);
                m_InitializationObject.Update();
                m_InitializationElement = new IMGUIContainer(OnInitializationGUI);
            }
        }