public static List<IRelation> ToRelation<TNode>(this ILink<TNode> link, RelationDirection linkDirection = RelationDirection.Forwards) where TNode : INode { List<IRelation> relations = new List<IRelation>(); IRelation forward = ToRelation(link); switch (linkDirection) { case RelationDirection.Forwards: relations.Add(forward); break; case RelationDirection.Backwards: relations.Add(forward.Reverse()); break; case RelationDirection.Both: relations.Add(forward); relations.Add(forward.DeepClone().IReverse()); break; } return relations; }