code: public static <T extends EObject> Iterable<IEObjectDescription> scopedElementsFor(Iterable<? extends T> elements,
  			final Function<T, QualifiedName> nameComputation) {
  		Iterable<IEObjectDescription> transformed = Iterables.transform(elements,
  				new Function<T, IEObjectDescription>() {
  					@Override
  					public IEObjectDescription apply(T from) {
  						final QualifiedName qualifiedName = nameComputation.apply(from);
  						if (qualifiedName != null)
  							return new EObjectDescription(qualifiedName, from, null);
  						return null;
  					}
  				});
  		return Iterables.filter(transformed, Predicates.notNull());
  	}
docs: transforms an {@link Iterable} of {@link EObject}s into an {@link Iterable} of {@link IEObjectDescription}s computing
  the name of the elements using the passed {@link Function} If the passed function returns null the object is
  filtered out.