private void PopulateGraphSource(HierarchicalNodeViewModel node, GraphSourceBase<HierarchicalNodeViewModel, LinkViewModelBase<HierarchicalNodeViewModel>> graphSource)
		{
			using (graphSource)
			{
				graphSource.AddNode(node);

				foreach (HierarchicalNodeViewModel subNode in node.Children)
				{
					using (var link = new LinkViewModelBase<HierarchicalNodeViewModel>(node, subNode))
					{
						graphSource.AddLink(link);

						this.PopulateGraphSource(subNode, graphSource);
					}
				}
			}
		}
		public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
		{
			GraphSourceBase<HierarchicalNodeViewModel, LinkViewModelBase<HierarchicalNodeViewModel>> graphSource = null;

			using (graphSource = new GraphSourceBase<HierarchicalNodeViewModel, LinkViewModelBase<HierarchicalNodeViewModel>>())
			{
				var collection = value as IEnumerable;
				if (collection != null)
				{
					foreach (HierarchicalNodeViewModel item in collection)
					{
						this.PopulateGraphSource(item, graphSource);
					}
				}
			}

			return graphSource;
		}