Been looking at the src and have a couple of questions:

Why is it that null column values are not allowed?

What is the reason for using a ConcurrentSkipListMap<byte[], IColumn> for columns_ in ColumnFamily
compared to using the set version and use the comparator to sort on the name field in IColumn?

For the call get_range_slice() you get all the rows returned even though they might have been deleted,
is it really that expensive to check if the list is empty before returning that row, or are there some other
places where this gets complicated?

Regards Erik