private static <T> List<T> join(List<? extends T> list, T element) {
   List<T> result = new ArrayList<T>(list.size() + 1);
   result.addAll(list);
   result.add(element);
   return result;
 }