code: private int compare(Composite sliceBounds, List<ByteBuffer> sstableBounds, CellNameType comparator, boolean isSliceStart)
      {
          for (int i = 0; i < sstableBounds.size(); i++)
          {
              if (i >= sliceBounds.size())
              {
                  // When isSliceStart is true, we're comparing the end of the slice against the min cell name for the sstable,
                  // so the slice is something like [(1, 0), (1, 0)], and the sstable max is something like (1, 0, 1).
                  // We want to return -1 (slice start is smaller than max column name) so that we say the slice intersects.
                  // The opposite is true when dealing with the end slice.  For example, with the same slice and a min
                  // cell name of (1, 0, 1), we want to return 1 (slice end is bigger than min column name).
                  return isSliceStart ? -1 : 1;
              }
  
              int comparison = comparator.subtype(i).compare(sliceBounds.get(i), sstableBounds.get(i));
              if (comparison != 0)
                  return comparison;
          }
  
          // the slice bound and sstable bound have been equal in all components so far
          if (sliceBounds.size() > sstableBounds.size())
          {
              // We have the opposite situation from the one described above.  With a slice of [(1, 0), (1, 0)],
              // and a min/max cell name of (1), we want to say the slice start is smaller than the max and the slice
              // end is larger than the min.
              return isSliceStart ? -1 : 1;
          }
  
          return 0;
      }
docs: Helper method for intersects()