code: public static <S, R> List<R> convert(List<S> source, Function<S, R> converter) {
      return (source == null)
          ? null
          : source
              .stream()
              .filter(Objects::nonNull)
              .map(converter)
              .filter(Objects::nonNull)
              .collect(Collectors.toList());
    }
docs: Convert a list of a given type using converter.
  
  @param source a list to convert
  @param converter the map function to apply
  @param <S> type to convert from
  @param <R> type to convert to
  @return A converted List with all pre-conversion and post-conversion null values removed. Can
  return an empty list. Will return null if source is null.