// 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);
            }
        }