public static TSource ElementAtOrDefault <TSource>(this ReadOnlyMemory <TSource> source, int index) => source.OfMemory().ElementAtOrDefault(index);
 public static List <T> ToList <T>(this ReadOnlyMemory <T> source) => source.OfMemory().ToList();
        //public static ValueEnumerable<TResult, SelectManyNode<TSource, TResult, MemoryNode<TSource>, EnumerableNode<TResult>>> SelectMany<TSource, TResult>(this ReadOnlyMemory<TSource> source, Func<TSource, IEnumerable<TResult>> selector)
        //{
        //    if (selector == null)
        //        throw new ArgumentNullException(nameof(selector));

        //    return source.OfMemory().SelectMany(src => selector(src).OfEnumerable());
        //}

        //public static ValueEnumerable<TResult, SelectManyNode<TSource, TResult, MemoryNode<TSource>, NodeU>> SelectMany<TSource, TResult, NodeU>(this ReadOnlyMemory<TSource> source, Func<TSource, ValueEnumerable<TResult, NodeU>> selector)
        //    where NodeU : INode<TResult>
        //{
        //    if (selector == null)
        //        throw new ArgumentNullException(nameof(selector));

        //    return source.OfMemory().SelectMany(selector);
        //}

        public static IEnumerable <T> Concat <T>(this ReadOnlyMemory <T> first, ReadOnlyMemory <T> second) => first.OfMemory().Concat(second.OfMemory());
 public static TSource LastOrDefault <TSource>(this ReadOnlyMemory <TSource> source) => source.OfMemory().LastOrDefault();