in lib/collections.go [797:824]
func hasEmpty(val iterator) bool {
it := val.Iterator()
switch val := val.(type) {
case traits.Lister:
for it.HasNext() == types.True {
elem := it.Next()
iter, ok := elem.(iterator)
if !ok {
continue
}
if iter.Size() == types.IntZero || hasEmpty(iter) {
return true
}
}
case traits.Mapper:
for it.HasNext() == types.True {
elem := val.Get(it.Next())
iter, ok := elem.(iterator)
if !ok {
continue
}
if iter.Size() == types.IntZero || hasEmpty(iter) {
return true
}
}
}
return false
}