using System.Collections; namespace Nbt.Tag; public interface INbtArray : INbtValue, IEnumerable { new Array Value { get; set; } } public interface INbtArray : INbtArray, INbtValue, IEnumerable where T : notnull { new T[] Value { get; set; } } public abstract class NbtArray(T[] value) : NbtValue(value), INbtArray where T : notnull { Array INbtArray.Value { get => Value; set => Value = (T[])value; } protected override T[] CopyValue() => (T[])value.Clone(); IEnumerator IEnumerable.GetEnumerator() => ((IEnumerable)Value).GetEnumerator(); IEnumerator IEnumerable.GetEnumerator() => Value.GetEnumerator(); }