using System.Collections.Generic; namespace GodotHostTest.AetherBind; public static class EnumerableExtensions { public enum SingleFailureReason { LessThanOne, MoreThanOne } public static T? Single(this IEnumerable enumerable, out SingleFailureReason? failureReason) where T : class { using var enumerator = enumerable.GetEnumerator(); if (!enumerator.MoveNext()) { failureReason = SingleFailureReason.LessThanOne; return null; } var value = enumerator.Current; if (enumerator.MoveNext()) { failureReason = SingleFailureReason.MoreThanOne; return null; } failureReason = null; return value; } }