if (minSeen.isEmpty())
return Arrays.asList(ct.split(candidate));
int typeCount = getTypeCount(ct);
List<ByteBuffer> components = Arrays.asList(ct.split(candidate));
List<ByteBuffer> biggest = minSeen.size() > components.size() ? minSeen : components;
// if typecount is less than both the components and maxseen, we only collect typecount columns.
int minSize = Math.min(typeCount, Math.min(components.size(), minSeen.size()));
int maxSize = Math.min(typeCount, biggest.size());
List<ByteBuffer> retList = new ArrayList<ByteBuffer>(maxSize);