Buggy code:
public class Memtable implements Comparable < Memtable > , IFlushable { private static final Logger logger = LoggerFactory . getLogger ( Memtable . class ) ; private boolean isFrozen ; private final int THRESHOLD = ( ( DatabaseDescriptor . getMemtableThroughput ( ) ) * 1024 ) * 1024 ; private final int THRESHOLD_COUNT = ( ( int ) ( ( ( DatabaseDescriptor . getMemtableOperations ( ) ) * 1024 ) * 1024 ) ) ; private final AtomicInteger currentThroughput = new AtomicInteger ( 0 ) ; private final AtomicInteger currentOperations = new AtomicInteger ( 0 ) ; private final long creationTime ; private final ConcurrentNavigableMap < DecoratedKey , ColumnFamily > columnFamilies = new ConcurrentSkipListMap < DecoratedKey , ColumnFamily > ( ) ; private final IPartitioner partitioner = StorageService . getPartitioner ( ) ; private final ColumnFamilyStore cfs ; public Memtable ( ColumnFamilyStore cfs ) { } public int compareTo ( Memtable rhs ) { } public int getCurrentThroughput ( ) { } public int getCurrentOperations ( ) { } boolean isThresholdViolated ( ) { } boolean isFrozen ( ) { } void freeze ( ) { } void put ( DecoratedKey key , ColumnFamily columnFamily ) { } private void resolve ( DecoratedKey key , ColumnFamily cf ) { } public String contents ( ) { } private SSTableReader writeSortedContents ( ) throws IOException { } public void flushAndSignal ( final Condition condition , ExecutorService sorter , final ExecutorService writer ) { } public String toString ( ) { } public Iterator < Map . Entry < DecoratedKey , ColumnFamily > > getEntryIterator ( DecoratedKey startWith ) { } public boolean isClean ( ) { } public String getTableName ( ) { } public static IColumnIterator getSliceIterator ( final DecoratedKey key , final ColumnFamily cf , SliceQueryFilter filter , AbstractType typeComparator ) { assert cf != null ; Collection < IColumn > rawColumns = cf . getSortedColumns ( ) ; Collection < IColumn > filteredColumns = filter . applyPredicate ( rawColumns ) ; final IColumn [ ] columns = filteredColumns . toArray ( new IColumn [ 0 ] ) ; if ( filter . reversed ) ArrayUtils . reverse ( columns ) ; IColumn startIColumn ; final boolean isStandard = ! ( cf . isSuper ( ) ) ; if ( isStandard ) startIColumn = new Column ( filter . start ) ; else <START_BUG> startIColumn = new SuperColumn ( filter . start , null ) ; <END_BUG> Comparator < IColumn > comparator = filter . getColumnComparator ( typeComparator ) ; int index ; if ( ( ( filter . start . length ) == 0 ) && ( filter . reversed ) ) { index = 0 ; } else { index = Arrays . binarySearch ( columns , startIColumn , comparator ) ; } final int startIndex = ( index < 0 ) ? - ( index + 1 ) : index ; return new AbstractColumnIterator ( ) { private int curIndex_ = startIndex ; public ColumnFamily getColumnFamily ( ) { return cf ; } public DecoratedKey getKey ( ) { return key ; } public boolean hasNext ( ) { return ( curIndex_ ) < ( columns . length ) ; } public IColumn next ( ) { return isStandard ? columns [ ( ( curIndex_ ) ++ ) ] : ( ( SuperColumn ) ( columns [ ( ( curIndex_ ) ++ ) ] ) ) . cloneMe ( ) ; } } ; } public static IColumnIterator getNamesIterator ( final DecoratedKey key , final ColumnFamily cf , final NamesQueryFilter filter ) { } public ColumnFamily getColumnFamily ( DecoratedKey key ) { } void clearUnsafe ( ) { } public boolean isExpired ( ) { } }

Fix:
startIColumn = new SuperColumn ( filter . start , null , cf . getClockType ( ) ) ;