code: public Iterable<B> convertAll(final Iterable<? extends A> fromIterable) {
  		checkNotNull(fromIterable, "fromIterable");
  		return new Iterable<B>() {
  			@Override
  			public Iterator<B> iterator() {
  				return new Iterator<B>() {
  					private final Iterator<? extends A> fromIterator = fromIterable.iterator();
  
  					@Override
  					public boolean hasNext() {
  						return fromIterator.hasNext();
  					}
  
  					@Override
  					public B next() {
  						return convert(fromIterator.next());
  					}
  
  					@Override
  					public void remove() {
  						fromIterator.remove();
  					}
  				};
  			}
  		};
  	}
docs: Returns an iterable that applies {@code convert} to each element of
  {@code fromIterable}. The conversion is done lazily.
  
  <p>
  The returned iterable's iterator supports {@code remove()} if the input
  iterator does. After a successful {@code remove()} call,
  {@code fromIterable} no longer contains the corresponding element.
  
  @param fromIterable
  the from iterable
  @return the iterable