code: public static <T> T findLast(Iterable<T> iterable, Functions.Function1<? super T, Boolean> predicate) {
  		if (predicate == null)
  			throw new NullPointerException("predicate");
  		if (iterable instanceof List<?>) {
  			List<T> list = (List<T>) iterable;
  			ListIterator<T> iterator = list.listIterator(list.size());
  			while (iterator.hasPrevious()) {
  				T t = iterator.previous();
  				if (predicate.apply(t))
  					return t;
  			}
  			return null;
  		} else {
  			return IteratorExtensions.findLast(iterable.iterator(), predicate);
  		}
  	}
docs: Finds the last element in the given iterable that fulfills the predicate. If none is found or the iterable is
  empty, <code>null</code> is returned.
  
  @param iterable
  the iterable. May not be <code>null</code>.
  @param predicate
  the predicate. May not be <code>null</code>.
  @return the last element in the iterable for which the given predicate returns <code>true</code>, returns
  <code>null</code> if no element matches the predicate or the iterable is empty.