in algebird-core/src/main/scala/com/twitter/algebird/immutable/BitSet.scala [200:224]
def recur(x: BitSet): BitSet =
x match {
case leaf @ Leaf(_, _) =>
if (leaf.isEmpty) null else leaf
case Branch(o, h, cs0) =>
var i = 0
var found: BitSet = null
while (i < 32 && found == null) {
val c = cs0(i)
if (c != null) found = recur(c)
i += 1
}
if (found == null) {
null
} else {
val cs1 = new Array[BitSet](32)
cs1(i - 1) = found
while (i < 32) {
val c = cs0(i)
if (c != null) cs1(i) = recur(c)
i += 1
}
Branch(o, h, cs1)
}
}