Range<T>(this IList<T> source, IEnumerable<T> items, int index)         {             if (source == null)             {                 throw new ArgumentNullException(nameof(source));             }              if (items == null)             {                 throw new ArgumentNullException(nameof(items));             }              if (source is List<T>)             {                 if (index >= 0)                 {                     ((List<T>)source).InsertRange(index, items);                 }                 else                 {                     ((List<T>)source).AddRange(items);                 }             }             else if (source is IExtendedList<T>)             {                 if (index >= 0)                 {                     ((IExtendedList<T>)source).InsertRange(items, index);                 }                 else                 {                     ((IExtendedList<T>)source).AddRange(items);                 }             }             else             {                 if (index >= 0)                 {                     