in src/Elastic.Transport/Responses/Dynamic/DynamicValue.cs [909:922]
public IEnumerator<DynamicValue> GetEnumerator()
{
if (Value is ICollection c) return c.OfType<object>().Select(v => SelfOrNew(v)).GetEnumerator();
else if (Value is IList l) return l.OfType<object>().Select(v => SelfOrNew(v)).GetEnumerator();
else if (Value is IDictionary<string, object> d) return d.Select(kv=> SelfOrNew(kv.Value)).GetEnumerator();
else if (Value is IDictionary<string, DynamicValue> dv) return dv.Values.GetEnumerator();
else if (Value is JsonElement e && e.ValueKind == JsonValueKind.Array) return e.EnumerateArray().Select(a=> SelfOrNew(a)).GetEnumerator();
else if (Value is JsonElement el && el.ValueKind == JsonValueKind.Object)
return ToDictionary().Values.Select(v => SelfOrNew(v)).GetEnumerator();
return Value == null
? Enumerable.Empty<DynamicValue>().GetEnumerator()
: new List<DynamicValue>() { this }.GetEnumerator();
}