/// <summary> /// an expandwalk with roots of thing /// attention! use it only once, or make tolist or toarray /// </summary> /// <param name="thing"></param> /// <returns></returns> public IEnumerable <IThing> Roots(IThing thing) { return(ThingGraph.Walk() .ExpandWalk(thing, 0, Walk.Roots <IThing, ILink> ()) .Where(item => !(item.Node is ILink || item.Node == thing)) .Select(item => item.Node)); }