public override IEnumerable <T> Traverse <T>(T node, Func <T, IEnumerable <T> > childrenSelector, bool includeSelf = false) { IEnumerable <T> traversal = new Traversal <T>(node, childrenSelector); return(includeSelf ? traversal : traversal.SkipLast()); }