code: public List<LocalTime> bottom(int n) {
          List<LocalTime> bottom = new ArrayList<>();
          int[] values = data.toIntArray();
          IntArrays.parallelQuickSort(values);
          int rowCount = 0;
          int validCount = 0;
          while (validCount < n && rowCount < size()) {
              int value = values[rowCount];
              if (value != TimeColumnType.missingValueIndicator()) {
                  bottom.add(PackedLocalTime.asLocalTime(value));
                  validCount++;
              }
              rowCount++;
          }
          return bottom;
      }
docs: Returns the smallest ("bottom") n values in the column,  Does not change the order in this column
  
  @param n The maximum number of records to return. The actual number will be smaller if n is greater than the
  number of observations in the column
  @return A list, possibly empty, of the smallest n observations