code: @NullSafe
    public static <T> List<T> shuffle(List<T> list) {
  
      if (isNotEmpty(list)) {
  
        Random random = new Random(System.currentTimeMillis());
  
        for (int index = 0, sizeMinusOne = nullSafeSize(list) - 1; index < sizeMinusOne; index++) {
          int randomIndex = (random.nextInt(sizeMinusOne - index) + 1);
          Collections.swap(list, index, index + randomIndex);
        }
      }
  
      return list;
    }
docs: Shuffles the elements in the {@link List}.  This method guarantees a random, uniform shuffling of the elements
  in the {@link List} with an operational efficiency of O(n).
  
  @param <T> Class type of the elements in the {@link List}.
  @param list {@link List} of elements to shuffle.
  @return the {@link List} of elements shuffled.
  @see java.util.Collections#swap(List, int, int)
  @see #isNotEmpty(Iterable)
  @see java.util.List