{
"api/index.html": {
"href": "api/index.html",
"title": "Introduction | X10D",
"keywords": "Introduction X10D (pronounced extend ), is a .NET package that provides extension methods for numerous types. The purpose of this library is to simplify a codebase by reducing the need for repeated code when performing common operations. Simplify your codebase. Take advantage of .NET. Use extension methods."
},
"api/X10D.Collections.ArrayExtensions.html": {
"href": "api/X10D.Collections.ArrayExtensions.html",
"title": "Class ArrayExtensions | X10D",
"keywords": "Class ArrayExtensions Extension methods for . Inheritance System.Object ArrayExtensions Namespace : X10D.Collections Assembly : X10D.dll Syntax public static class ArrayExtensions : object Methods | Improve this Doc View Source AsReadOnly(T[]) Returns a read-only wrapper for the array. Declaration public static IReadOnlyCollection AsReadOnly(this T[] array) Parameters Type Name Description T[] array The one-dimensional, zero-based array to wrap in a read-only wrapper. Returns Type Description IReadOnlyCollection A wrapper for the specified array. Type Parameters Name Description T The type of the elements in the array. | Improve this Doc View Source Clear(T[]) Clears the contents of an array. Declaration public static void Clear(this T[] array) Parameters Type Name Description T[] array The array to clear. Type Parameters Name Description T The type of the elements in the array. | Improve this Doc View Source Clear(T[], Range) Sets a range of elements in an array to the default value of each element type. Declaration public static void Clear(this T[] array, Range range) Parameters Type Name Description T[] array The array whose elements need to be cleared. Range range A range defining the start index and number of elements to clear. Type Parameters Name Description T The type of the elements in the array. | Improve this Doc View Source Clear(T[], Int32, Int32) Sets a range of elements in an array to the default value of each element type. Declaration public static void Clear(this T[] array, int index, int length) Parameters Type Name Description T[] array The array whose elements need to be cleared. System.Int32 index The starting index of the range of elements to clear. System.Int32 length The number of elements to clear. Type Parameters Name Description T The type of the elements in the array."
},
"api/X10D.Collections.BoolListExtensions.html": {
"href": "api/X10D.Collections.BoolListExtensions.html",
"title": "Class BoolListExtensions | X10D",
"keywords": "Class BoolListExtensions Collection-related extension methods for of . Inheritance System.Object BoolListExtensions Namespace : X10D.Collections Assembly : X10D.dll Syntax public static class BoolListExtensions : object Methods | Improve this Doc View Source PackByte(IReadOnlyList) Packs a collection of booleans into a . Declaration public static byte PackByte(this IReadOnlyList source) Parameters Type Name Description IReadOnlyList < System.Boolean > source The collection of booleans to pack. Returns Type Description System.Byte An 8-bit unsigned integer containing the packed booleans. | Improve this Doc View Source PackInt16(IReadOnlyList) Packs a collection of booleans into a . Declaration public static short PackInt16(this IReadOnlyList source) Parameters Type Name Description IReadOnlyList < System.Boolean > source The collection of booleans to pack. Returns Type Description System.Int16 A 16-bit signed integer containing the packed booleans. | Improve this Doc View Source PackInt32(IReadOnlyList) Packs a collection of booleans into a . Declaration public static int PackInt32(this IReadOnlyList source) Parameters Type Name Description IReadOnlyList < System.Boolean > source The collection of booleans to pack. Returns Type Description System.Int32 A 32-bit signed integer containing the packed booleans. | Improve this Doc View Source PackInt64(IReadOnlyList) Packs a collection of booleans into a . Declaration public static long PackInt64(this IReadOnlyList source) Parameters Type Name Description IReadOnlyList < System.Boolean > source The collection of booleans to pack. Returns Type Description System.Int64 A 64-bit signed integer containing the packed booleans."
},
"api/X10D.Collections.ByteExtensions.html": {
"href": "api/X10D.Collections.ByteExtensions.html",
"title": "Class ByteExtensions | X10D",
"keywords": "Class ByteExtensions Collection-related extension methods for . Inheritance System.Object ByteExtensions Namespace : X10D.Collections Assembly : X10D.dll Syntax public static class ByteExtensions : object Methods | Improve this Doc View Source Unpack(Byte) Unpacks this 8-bit unsigned integer into a boolean list, treating it as a bit field. Declaration public static bool[] Unpack(this byte value) Parameters Type Name Description System.Byte value The value to unpack. Returns Type Description System.Boolean [] An array of with length 8. | Improve this Doc View Source Unpack(Byte, Span) Unpacks this 8-bit unsigned integer into a boolean list, treating it as a bit field. Declaration public static void Unpack(this byte value, Span destination) Parameters Type Name Description System.Byte value The value to unpack. Span < System.Boolean > destination When this method returns, contains the unpacked booleans from value ."
},
"api/X10D.Collections.CollectionExtensions.html": {
"href": "api/X10D.Collections.CollectionExtensions.html",
"title": "Class CollectionExtensions | X10D",
"keywords": "Class CollectionExtensions Collection-related extension methods for . Inheritance System.Object CollectionExtensions Namespace : X10D.Collections Assembly : X10D.dll Syntax public static class CollectionExtensions : object Methods | Improve this Doc View Source ClearAndDisposeAll(ICollection) Calls on each item in the collection, then clears the collection by calling . Declaration public static void ClearAndDisposeAll(this ICollection source) where T : IDisposable Parameters Type Name Description ICollection source The collection to clear, and whose elements should be disposed. Type Parameters Name Description T The type of the elements in source . See Also DisposeAll(IEnumerable) | Improve this Doc View Source ClearAndDisposeAllAsync(ICollection) Asynchronously calls on each item in the collection, then clears the collection by calling . Declaration public static Task ClearAndDisposeAllAsync(this ICollection source) where T : IAsyncDisposable Parameters Type Name Description ICollection source The collection to clear, and whose elements should be disposed. Returns Type Description Task Type Parameters Name Description T The type of the elements in source . See Also DisposeAllAsync(IEnumerable)"
},
"api/X10D.Collections.DictionaryExtensions.html": {
"href": "api/X10D.Collections.DictionaryExtensions.html",
"title": "Class DictionaryExtensions | X10D",
"keywords": "Class DictionaryExtensions Extension methods for and similar types. Inheritance System.Object DictionaryExtensions Namespace : X10D.Collections Assembly : X10D.dll Syntax public static class DictionaryExtensions : object Methods | Improve this Doc View Source AddOrUpdate(Dictionary, TKey, TValue, Func) Adds a key/value pair to the if the key does not already exist, or updates a key/value pair in the by using the specified function if the key already exists. Declaration public static TValue AddOrUpdate(this Dictionary dictionary, TKey key, TValue addValue, Func updateValueFactory) Parameters Type Name Description Dictionary dictionary The dictionary to update. TKey key The key to be added or whose value should be updated. TValue addValue The value to be added for an absent key. Func updateValueFactory The function used to generate a new value for an existing key based on the key's existing value. Returns Type Description TValue The new value for the key. This will be either be addValue (if the key was absent) or the result of updateValueFactory (if the key was present). Type Parameters Name Description TKey The type of the keys in the dictionary. TValue The type of the values in the dictionary. | Improve this Doc View Source AddOrUpdate(Dictionary, TKey, Func, Func) Uses the specified functions to add a key/value pair to the if the key does not already exist, or to update a key/value pair in the if the key already exists. Declaration public static TValue AddOrUpdate(this Dictionary dictionary, TKey key, Func addValueFactory, Func updateValueFactory) Parameters Type Name Description Dictionary dictionary The dictionary to update. TKey key The key to be added or whose value should be updated. Func addValueFactory The function used to generate a value for an absent key. Func updateValueFactory The function used to generate a new value for an existing key based on the key's existing value. Returns Type Description TValue The new value for the key. This will be either be the result of addValueFactory (if the key was absent) or the result of updateValueFactory (if the key was present). Type Parameters Name Description TKey The type of the keys in the dictionary. TValue The type of the values in the dictionary. | Improve this Doc View Source AddOrUpdate(IDictionary, TKey, TValue, Func) Adds a key/value pair to the if the key does not already exist, or updates a key/value pair in the by using the specified function if the key already exists. Declaration public static TValue AddOrUpdate(this IDictionary dictionary, TKey key, TValue addValue, Func updateValueFactory) Parameters Type Name Description IDictionary dictionary The dictionary to update. TKey key The key to be added or whose value should be updated. TValue addValue The value to be added for an absent key. Func updateValueFactory The function used to generate a new value for an existing key based on the key's existing value. Returns Type Description TValue The new value for the key. This will be either be addValue (if the key was absent) or the result of updateValueFactory (if the key was present). Type Parameters Name Description TKey The type of the keys in the dictionary. TValue The type of the values in the dictionary. | Improve this Doc View Source AddOrUpdate(IDictionary, TKey, Func, Func) Uses the specified functions to add a key/value pair to the if the key does not already exist, or to update a key/value pair in the if the key already exists. Declaration public static TValue AddOrUpdate(this IDictionary dictionary, TKey key, Func addValueFactory, Func updateValueFactory) Parameters Type Name Description IDictionary dictionary The dictionary to update. TKey key The key to be added or whose value should be updated. Func addValueFactory The function used to generate a value for an absent key. Func updateValueFactory The function used to generate a new value for an existing key based on the key's existing value. Returns Type Description TValue The new value for the key. This will be either be the result of addValueFactory (if the key was absent) or the result of updateValueFactory (if the key was present). Type Parameters Name Description TKey The type of the keys in the dictionary. TValue The type of the values in the dictionary. | Improve this Doc View Source AddOrUpdate(Dictionary, TKey, Func, Func, TArg) Uses the specified functions and argument to add a key/value pair to the if the key does not already exist, or to update a key/value pair in the if th key already exists. Declaration public static TValue AddOrUpdate(this Dictionary dictionary, TKey key, Func addValueFactory, Func updateValueFactory, TArg factoryArgument) Parameters Type Name Description Dictionary dictionary The dictionary to update. TKey key The key to be added or whose value should be updated. Func addValueFactory The function used to generate a value for an absent key. Func updateValueFactory The function used to generate a new value for an existing key based on the key's existing value. TArg factoryArgument An argument to pass into addValueFactory and updateValueFactory . Returns Type Description TValue The new value for the key. This will be either be the result of addValueFactory (if the key was absent) or the result of updateValueFactory (if the key was present). Type Parameters Name Description TKey The type of the keys in the dictionary. TValue The type of the values in the dictionary. TArg The type of an argument to pass into addValueFactory and updateValueFactory . | Improve this Doc View Source AddOrUpdate(IDictionary, TKey, Func, Func, TArg) Uses the specified functions and argument to add a key/value pair to the if the key does not already exist, or to update a key/value pair in the if th key already exists. Declaration public static TValue AddOrUpdate(this IDictionary dictionary, TKey key, Func addValueFactory, Func updateValueFactory, TArg factoryArgument) Parameters Type Name Description IDictionary dictionary The dictionary to update. TKey key The key to be added or whose value should be updated. Func addValueFactory The function used to generate a value for an absent key. Func updateValueFactory The function used to generate a new value for an existing key based on the key's existing value. TArg factoryArgument An argument to pass into addValueFactory and updateValueFactory . Returns Type Description TValue The new value for the key. This will be either be the result of addValueFactory (if the key was absent) or the result of updateValueFactory (if the key was present). Type Parameters Name Description TKey The type of the keys in the dictionary. TValue The type of the values in the dictionary. TArg The type of an argument to pass into addValueFactory and updateValueFactory . | Improve this Doc View Source ToConnectionString(IEnumerable>) Converts an of to a data connection string. Declaration public static string ToConnectionString(this IEnumerable> source) Parameters Type Name Description IEnumerable < KeyValuePair > source The source dictionary. Returns Type Description System.String A representing the dictionary as a key=value set, concatenated with ; . Type Parameters Name Description TKey The type of the key element of the key/value pair. TValue The type of the value element of the key/value pair. | Improve this Doc View Source ToConnectionString(IEnumerable>, Func, Func>) Converts an of to an data connection string. Declaration public static string ToConnectionString(this IEnumerable> source, Func keySelector, Func valueSelector) Parameters Type Name Description IEnumerable < KeyValuePair > source The source dictionary. Func keySelector A transform function to apply to the of each element. Func > valueSelector A transform function to apply to the of each element. Returns Type Description System.String A representing the dictionary as a key=value set, concatenated with ; . Type Parameters Name Description TKey The type of the key element of the key/value pair. TValue The type of the value element of the key/value pair. | Improve this Doc View Source ToConnectionString(IEnumerable>, Func>) Converts an of to a data connection string. Declaration public static string ToConnectionString(this IEnumerable> source, Func selector) Parameters Type Name Description IEnumerable < KeyValuePair > source The source dictionary. Func > selector A transform function to apply to the of each element. Returns Type Description System.String A representing the dictionary as a key=value set, concatenated with ; . Type Parameters Name Description TKey The type of the key element of the key/value pair. TValue The type of the value element of the key/value pair. | Improve this Doc View Source ToGetParameters(IEnumerable>) Converts an of to a HTTP GET query string. Declaration public static string ToGetParameters(this IEnumerable> source) Parameters Type Name Description IEnumerable < KeyValuePair > source The source dictionary. Returns Type Description System.String A representing the dictionary as a key=value set, concatenated with & . Type Parameters Name Description TKey The type of the key element of the key/value pair. TValue The type of the value element of the key/value pair. | Improve this Doc View Source ToGetParameters(IEnumerable>, Func, Func>) Converts an of to a HTTP GET query string. Declaration public static string ToGetParameters(this IEnumerable> source, Func keySelector, Func valueSelector) Parameters Type Name Description IEnumerable < KeyValuePair > source The source dictionary. Func keySelector A transform function to apply to the of each element. Func > valueSelector A transform function to apply to the of each element. Returns Type Description System.String A representing the dictionary as a key=value set, concatenated with & . Type Parameters Name Description TKey The type of the key element of the key/value pair. TValue The type of the value element of the key/value pair. | Improve this Doc View Source ToGetParameters(IEnumerable>, Func>) Converts an of to a HTTP GET query string. Declaration public static string ToGetParameters(this IEnumerable> source, Func selector) Parameters Type Name Description IEnumerable < KeyValuePair > source The source dictionary. Func > selector A transform function to apply to the of each element. Returns Type Description System.String A representing the dictionary as a key=value set, concatenated with & . Type Parameters Name Description TKey The type of the key element of the key/value pair. TValue The type of the value element of the key/value pair."
},
"api/X10D.Collections.EnumerableExtensions.html": {
"href": "api/X10D.Collections.EnumerableExtensions.html",
"title": "Class EnumerableExtensions | X10D",
"keywords": "Class EnumerableExtensions Extension methods for . Inheritance System.Object EnumerableExtensions Namespace : X10D.Collections Assembly : X10D.dll Syntax public static class EnumerableExtensions : object Methods | Improve this Doc View Source CountWhereNot(IEnumerable, Func) Returns a number that represents how many elements in the specified sequence do not satisfy a condition. Declaration public static int CountWhereNot(this IEnumerable source, Func predicate) Parameters Type Name Description IEnumerable source A sequence that contains elements to be tested and counted. Func predicate A function to test each element for a condition. Returns Type Description System.Int32 A number that represents how many elements in the sequence do not satisfy the condition in the predicate function. Type Parameters Name Description TSource The type of the elements of source . | Improve this Doc View Source DisposeAll(IEnumerable) Calls on all elements of the . Declaration public static void DisposeAll(this IEnumerable source) where T : IDisposable Parameters Type Name Description IEnumerable source The enumerable collection whose elements to dispose. Type Parameters Name Description T The type of the elements in source . See Also ClearAndDisposeAll(ICollection) | Improve this Doc View Source DisposeAllAsync(IEnumerable) Asynchronously calls on all elements of the . Declaration public static Task DisposeAllAsync(this IEnumerable source) where T : IAsyncDisposable Parameters Type Name Description IEnumerable source The enumerable collection whose elements to dispose. Returns Type Description Task Type Parameters Name Description T The type of the elements in source . See Also ClearAndDisposeAllAsync(ICollection) | Improve this Doc View Source FirstWhereNot(IEnumerable, Func) Returns the first element in a sequence that does not satisfy a specified condition. Declaration public static TSource FirstWhereNot(this IEnumerable source, Func predicate) Parameters Type Name Description IEnumerable source An to return an element from. Func predicate A function to test each element for a condition. Returns Type Description TSource The first element in the sequence that fails the test in the specified predicate function. Type Parameters Name Description TSource The type of the elements in source | Improve this Doc View Source FirstWhereNotOrDefault(IEnumerable, Func) Returns the first element in a sequence that does not satisfy a specified condition. Declaration public static TSource FirstWhereNotOrDefault(this IEnumerable source, Func predicate) Parameters Type Name Description IEnumerable source An to return an element from. Func predicate A function to test each element for a condition. Returns Type Description TSource langword_csharp_default(TSource) if source is empty or if no element passes the test specified by predicate ; otherwise, the first element in source that fails the test specified by predicate . Type Parameters Name Description TSource The type of the elements in source | Improve this Doc View Source For(IEnumerable, Action) Performs the specified action on each element of the . Declaration public static void For(this IEnumerable source, Action action) Parameters Type Name Description IEnumerable source The whose elements on which to perform action . Action < System.Int32 , T> action The delegate to perform on each element of the . The argument passed to this delegate represents the index. Type Parameters Name Description T The type of the elements in source . | Improve this Doc View Source ForEach(IEnumerable, Action) Performs the specified action on each element of the . Declaration public static void ForEach(this IEnumerable source, Action action) Parameters Type Name Description IEnumerable source The whose elements on which to perform action . Action action The delegate to perform on each element of the . Type Parameters Name Description T The type of the elements in source . | Improve this Doc View Source LastWhereNot(IEnumerable, Func) Returns the last element in a sequence that does not satisfy a specified condition. Declaration public static TSource LastWhereNot(this IEnumerable source, Func predicate) Parameters Type Name Description IEnumerable source An to return an element from. Func predicate A function to test each element for a condition. Returns Type Description TSource The last element in the sequence that fails the test in the specified predicate function. Type Parameters Name Description TSource The type of the elements in source | Improve this Doc View Source LastWhereNotOrDefault(IEnumerable, Func) Returns the last element in a sequence that does not satisfy a specified condition. Declaration public static TSource LastWhereNotOrDefault(this IEnumerable source, Func predicate) Parameters Type Name Description IEnumerable source An to return an element from. Func predicate A function to test each element for a condition. Returns Type Description TSource langword_csharp_default(TSource) if source is empty or if no element passes the test specified by predicate ; otherwise, the last element in source that fails the test specified by predicate . Type Parameters Name Description TSource The type of the elements in source | Improve this Doc View Source Shuffled(IEnumerable, Nullable) Reorganizes the elements in an enumerable by implementing a Fisher-Yates shuffle, and returns th shuffled result. Declaration public static IReadOnlyCollection Shuffled(this IEnumerable source, Random? random = null) Parameters Type Name Description IEnumerable source The to shuffle. System.Nullable < Random > random Optional. The instance to use for the shuffling. Returns Type Description IReadOnlyCollection The shuffled collection. Type Parameters Name Description T The element type. | Improve this Doc View Source WhereNot(IEnumerable, Func) Filters a sequence of values based on a predicate, such that all elements in the result do not match the predicate. Declaration public static IEnumerable WhereNot(this IEnumerable source, Func predicate) Parameters Type Name Description IEnumerable source An to filter. Func predicate A function to test each element for a condition. Returns Type Description IEnumerable An that contains elements from the input sequence that do not satisfy the condition. Type Parameters Name Description TSource The type of the elements of source . | Improve this Doc View Source WhereNotNull(IEnumerable) Filters a sequence of values by omitting elements that are null ( langword_csharp_Nothing in Visual Basic). Declaration public static IEnumerable WhereNotNull(this IEnumerable source) Parameters Type Name Description IEnumerable source An to filter. Returns Type Description IEnumerable An that contains elements from the input sequence that are not null ( langword_csharp_Nothing in Visual Basic). Type Parameters Name Description TSource The type of the elements of source ."
},
"api/X10D.Collections.html": {
"href": "api/X10D.Collections.html",
"title": "Namespace X10D.Collections | X10D",
"keywords": "Namespace X10D.Collections Classes ArrayExtensions Extension methods for . BoolListExtensions Collection-related extension methods for of . ByteExtensions Collection-related extension methods for . CollectionExtensions Collection-related extension methods for . DictionaryExtensions Extension methods for and similar types. EnumerableExtensions Extension methods for . Int16Extensions Collection-related extension methods for . Int32Extensions Collection-related extension methods for . Int64Extensions Collection-related extension methods for . ListExtensions Extension methods for and . QueueExtensions Extension methods for . SpanExtensions Extension methods for and StackExtensions Extension methods for . Structs SpanSplitEnumerator Enumerates the elements of a ."
},
"api/X10D.Collections.Int16Extensions.html": {
"href": "api/X10D.Collections.Int16Extensions.html",
"title": "Class Int16Extensions | X10D",
"keywords": "Class Int16Extensions Collection-related extension methods for . Inheritance System.Object Int16Extensions Namespace : X10D.Collections Assembly : X10D.dll Syntax public static class Int16Extensions : object Methods | Improve this Doc View Source Unpack(Int16) Unpacks this 16-bit signed integer into a boolean list, treating it as a bit field. Declaration public static bool[] Unpack(this short value) Parameters Type Name Description System.Int16 value The value to unpack. Returns Type Description System.Boolean [] An array of with length 16. | Improve this Doc View Source Unpack(Int16, Span) Unpacks this 16-bit signed integer into a boolean list, treating it as a bit field. Declaration public static void Unpack(this short value, Span destination) Parameters Type Name Description System.Int16 value The value to unpack. Span < System.Boolean > destination When this method returns, contains the unpacked booleans from value ."
},
"api/X10D.Collections.Int32Extensions.html": {
"href": "api/X10D.Collections.Int32Extensions.html",
"title": "Class Int32Extensions | X10D",
"keywords": "Class Int32Extensions Collection-related extension methods for . Inheritance System.Object Int32Extensions Namespace : X10D.Collections Assembly : X10D.dll Syntax public static class Int32Extensions : object Methods | Improve this Doc View Source Unpack(Int32) Unpacks this 32-bit signed integer into a boolean list, treating it as a bit field. Declaration public static bool[] Unpack(this int value) Parameters Type Name Description System.Int32 value The value to unpack. Returns Type Description System.Boolean [] An array of with length 32. | Improve this Doc View Source Unpack(Int32, Span) Unpacks this 32-bit signed integer into a boolean list, treating it as a bit field. Declaration public static void Unpack(this int value, Span destination) Parameters Type Name Description System.Int32 value The value to unpack. Span < System.Boolean > destination When this method returns, contains the unpacked booleans from value ."
},
"api/X10D.Collections.Int64Extensions.html": {
"href": "api/X10D.Collections.Int64Extensions.html",
"title": "Class Int64Extensions | X10D",
"keywords": "Class Int64Extensions Collection-related extension methods for . Inheritance System.Object Int64Extensions Namespace : X10D.Collections Assembly : X10D.dll Syntax public static class Int64Extensions : object Methods | Improve this Doc View Source Unpack(Int64) Unpacks this 64-bit signed integer into a boolean list, treating it as a bit field. Declaration public static bool[] Unpack(this long value) Parameters Type Name Description System.Int64 value The value to unpack. Returns Type Description System.Boolean [] An array of with length 64. | Improve this Doc View Source Unpack(Int64, Span) Unpacks this 64-bit signed integer into a boolean list, treating it as a bit field. Declaration public static void Unpack(this long value, Span destination) Parameters Type Name Description System.Int64 value The value to unpack. Span < System.Boolean > destination When this method returns, contains the unpacked booleans from value ."
},
"api/X10D.Collections.ListExtensions.html": {
"href": "api/X10D.Collections.ListExtensions.html",
"title": "Class ListExtensions | X10D",
"keywords": "Class ListExtensions Extension methods for and . Inheritance System.Object ListExtensions Namespace : X10D.Collections Assembly : X10D.dll Syntax public static class ListExtensions : object Methods | Improve this Doc View Source Fill(IList, T) Assigns the given value to each element of the list. Declaration public static void Fill(this IList source, T value) Parameters Type Name Description IList source The list to be filled. T value The value to assign to each list element. Type Parameters Name Description T The type of the elements in the list. | Improve this Doc View Source Fill(IList, T, Int32, Int32) Assigns the given value to the elements of the list which are within the range of startIndex (inclusive) and the next count number of indices. Declaration public static void Fill(this IList source, T value, int startIndex, int count) Parameters Type Name Description IList source The list to be filled. T value The value to assign to each list element. System.Int32 startIndex A 32-bit integer that represents the index in the list at which filling begins. System.Int32 count The number of elements to fill. Type Parameters Name Description T The type of the elements in the list. | Improve this Doc View Source IndexOf(IReadOnlyList