in algebird-core/src/main/scala/com/twitter/algebird/HyperLogLog.scala [573:587]
override def sumOption(items: TraversableOnce[HLL]): Option[HLL] =
if (items.iterator.isEmpty) {
None
} else {
val iter = items.iterator.buffered
var curValue = iter.next()
while (iter.hasNext) {
curValue = (curValue, iter.head) match {
case (DenseHLL(_, _), _) => denseUpdate(curValue, iter)
case (_, DenseHLL(_, _)) => denseUpdate(curValue, iter)
case _ => curValue + iter.next()
}
}
Some(curValue)
}