public static PropertyAccessTree Create(object obj, string property_name) { log.Trace("Building property access tree"); PropertyAccessTree tree = new PropertyAccessTree(); if (!TypeHelper.DoesTypeImplementINotifyPropertyChangedAndChanging(obj.GetType())) throw new ArgumentException("Object must implement INotifyPropertyChanging and INotifyPropertyChanged"); var constant_node = new ConstantNode((INotifyPropertyChanged)obj, "this"); tree.Children.Add(constant_node); var property_info = obj.GetType().GetProperty(property_name); var property_node = new PropertyNode(property_info); constant_node.Children.Add(property_node); tree.DumpToLog(); return tree; }