public void Traverse(IVisitor visitor) { if (visitor == null) { throw new ArgumentNullException("visitor"); } visitor.PerformBefore(this); m_identifier.Traverse(visitor); visitor.PerformAfter(this); if (m_next != null) { m_next.Traverse(visitor); } }
public void Traverse(IVisitor visitor) { if (visitor == null) { throw new ArgumentNullException("visitor"); } visitor.PerformBefore(this); if (m_join != null) { m_join.Traverse(visitor); } visitor.PerformOnSource(this); Debug.Assert(m_source != null); m_source.Traverse(visitor); visitor.PerformOnAlias(this); if (m_alias != null) { m_alias.Traverse(visitor); } visitor.PerformBeforeCondition(this); if (m_joinCondition != null) { m_joinCondition.Traverse(visitor); } visitor.PerformAfterCondition(this); if (m_next != null) { m_next.Traverse(visitor); } visitor.PerformAfter(this); }