public void Find(Action <JoinNode <T> > callback) { if (_node == null) { var joinNode = _left.Successors .OfType <JoinNode <T> >() .Where(node => _matchRight(node.RightActivation)) .FirstOrDefault(); if (joinNode != null) { _node = joinNode; } else { var rightActivation = _rightActivation(); _node = _configurator.Join(rightActivation); _left.AddActivation(_node); } } if (_node != null) { callback(_node); } }