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