public void Select <TNode>(Node <TNode> node) where TNode : class { _node = null; node.Accept(this); if (_node == null) { PropertyNode <T, TProperty> propertyNode = _configurator.Property <T, TProperty>(Property); var parentNode = node as Node <T>; if (parentNode == null) { throw new ArgumentException("Expected propertyNode, but was " + node.GetType().Name); } parentNode.AddActivation(propertyNode); _node = propertyNode; } _next.Select(_node); }