public static IDictionary <T1, T2> SubDictionary <T1, T2>(this IDictionary <T1, T2> originalDictionary, T1 startKeyInclusive, T1 endKeyInclusive)
        {
            var head = originalDictionary.Head(startKeyInclusive, false);
            var tail = originalDictionary.Tail(endKeyInclusive, false);
            var tmp  = originalDictionary.Clone();

            tmp.Remove(head.Keys.ToArray <T1>());
            tmp.Remove(tail.Keys.ToArray <T1>());

            return(tmp);
        }