public IEnumerable <Query> All() { yield return(this); if (And != null) { foreach (var q in And.All()) { yield return(q); } } if (Or != null) { foreach (var q in Or.All()) { yield return(q); } } if (Not != null) { foreach (var q in Not.All()) { yield return(q); } } }