public void RegisterConceptLayout(Type conceptType, IConceptLayout conceptLayout)
 {
     if (conceptType == null)
     {
         throw new ArgumentNullException(nameof(conceptType));
     }
     if (conceptLayout == null)
     {
         throw new ArgumentNullException(nameof(conceptLayout));
     }
     _layouts.Add(conceptType, conceptLayout);
 }
        public ConceptNodeViewModel CreateSyntaxNode(ISyntaxNodeViewModel parentNode, ISyntaxNode model)
        {
            if (model == null)
            {
                throw new ArgumentNullException(nameof(model));
            }

            IConceptLayout layout = GetLayout(model);

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

            ConceptNodeViewModel node = layout.Layout(model) as ConceptNodeViewModel;

            node.Owner = parentNode;
            InitializeConceptViewModel(node);

            return(node);
        }