public static void VisitDescendantsSafe(this IJsCsGlue @this, Func <IJsCsGlue, bool> visit) { var res = new HashSet <IJsCsGlue>(); Func <IJsCsGlue, bool> newVisitor = (glue) => (res.Add(glue)) && visit(glue); @this.VisitDescendants(newVisitor); }