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