code: public static <D, R> Collection<R> apply(final Mapping<? super D, R> mapping, final Collection<? extends D> coll) {
          return new AbstractCollection<R>() {
  
              @Override
              public Iterator<R> iterator() {
                  return apply(mapping, coll.iterator());
              }
  
              @Override
              public int size() {
                  return coll.size();
              }
          };
      }
docs: Applies a mapping to a collection, resulting in a collection containing the result of applying the specified
  mapping to each element in the collection.
  <p>
  Note that more specific properties of the specified collection won't be preserved: If the given collection is
  e.g. a set, and the provided mapping is not bijective, then the resulting collections may contain some values
  multiple times.
  
  @param <D>
  domain class.
  @param <R>
  range class.
  @param mapping
  the mapping to apply.
  @param coll
  the collection.
  
  @return the mapped collection.