code: private <E> List<E> cons(E value, List<E> list) {
          List<E> result = new ArrayList<E>(list.size() + 1);
          result.add(value);
          result.addAll(list);
          return result;
      }
docs: TODO ... do something more efficient