public static <T> List<T> insertAt_split(List<T> list, int pos, T t) throws IllegalArgumentException {
        if (pos < 1) {
            throw new IllegalArgumentException("pos can't be less than 1");
        }

        Map<Boolean, List<T>> split = P17.split(list, pos);
        List<T> first = split.get(true);
        List<T> second = split.get(false);
        first.add(pos - 1, t);

        first.addAll(second);
        return first;
    }
(*) Insert an element at a given position into a list
java8/src/main/java/com/shekhargulati/ninetynine_problems/_01_lists/P21.java