public DataModelPropertiesViewModel GetPluginDataModelVisualization(Plugin plugin, bool includeMainDataModel)
        {
            if (includeMainDataModel)
            {
                DataModelPropertiesViewModel mainDataModel = GetMainDataModelVisualization();

                // If the main data model already includes the plugin data model we're done
                if (mainDataModel.Children.Any(c => c.DataModel.PluginInfo.Instance == plugin))
                {
                    return(mainDataModel);
                }
                // Otherwise get just the plugin data model and add it
                DataModelPropertiesViewModel pluginDataModel = GetPluginDataModelVisualization(plugin, false);
                if (pluginDataModel != null)
                {
                    mainDataModel.Children.Add(pluginDataModel);
                }

                return(mainDataModel);
            }

            DataModel dataModel = _dataModelService.GetPluginDataModel(plugin);

            if (dataModel == null)
            {
                return(null);
            }

            DataModelPropertiesViewModel viewModel = new DataModelPropertiesViewModel(null, null, null);

            viewModel.Children.Add(new DataModelPropertiesViewModel(dataModel, viewModel, null));

            // Update to populate children
            viewModel.Update(this);
            viewModel.UpdateRequested += (sender, args) => viewModel.Update(this);
            return(viewModel);
        }