using System; using System.Collections; using System.Collections.Generic; namespace PkmnLibSharp.Utilities { internal static class CollectionHelper { internal static ReadOnlyArray ToReadOnly(this IList arr) { return new ReadOnlyArray(arr); } } public class ReadOnlyArray : IReadOnlyList { private readonly IList _arr; public ReadOnlyArray(IList arr) { _arr = arr; } public IEnumerator GetEnumerator() { return _arr.GetEnumerator(); } IEnumerator IEnumerable.GetEnumerator() { return GetEnumerator(); } public int Count => _arr.Count; public T this[int index] => _arr[index]; public int IndexOf(T item) { return _arr.IndexOf(item); } public int IndexOf(Func predicate) { for (var index = 0; index < _arr.Count; index++) { var a = _arr[index]; if (predicate(a)) { return index; } } return -1; } } }