// ITwoThree public IEnumerable <T> GetValues() { foreach (var value in Left.GetValues()) { yield return(value); } yield return(First); foreach (var value in Middle.GetValues()) { yield return(value); } yield return(Second); foreach (var value in Right.GetValues()) { yield return(value); } }