code: public static <D, R> List<R> apply(final Mapping<? super D, R> mapping, final List<? extends D> list) {
          return new AbstractList<R>() {
  
              @Override
              public R get(int index) {
                  return mapping.get(list.get(index));
              }
  
              @Override
              public int size() {
                  return list.size();
              }
          };
      }
docs: Applies a mapping to a list, resulting in a list containing the result of applying the specified mapping to each
  element in the list.
  
  @param mapping
  the mapping to apply.
  @param list
  the list.
  
  @return the mapped list.