public void SetOrigin(FromElement origin, bool manyToMany) { _origin = origin; origin.AddDestination(this); if (origin.FromClause == FromClause) { // TODO: Figure out a better way to get the FROM elements in a proper tree structure. // If this is not the destination of a many-to-many, add it as a child of the origin. if (manyToMany) { origin.AddSibling(this); } else { if (!Walker.IsInFrom && !Walker.IsInSelect) { FromClause.AddChild(this); } else { origin.AddChild(this); } } } else if (!Walker.IsInFrom) { // HHH-276 : implied joins in a subselect where clause - The destination needs to be added // to the destination's from clause. FromClause.AddChild(this); // Not sure if this is will fix everything, but it works. } else { // Otherwise, the destination node was implied by the FROM clause and the FROM clause processor // will automatically add it in the right place. } }