code: @Beta
  	public static <T> List<T> toList(Iterable<T> iterable) {
  		if (iterable instanceof List<?>) {
  			List<T> result = (List<T>) iterable;
  			return result;
  		}
  		return Lists.newArrayList(iterable);
  	}
docs: Returns a list that contains all the entries of the given iterable in the same order. If the iterable is of type
  {@link List}, itself is returned. Therefore an unchecked cast is performed.
  In all other cases, the result list is a copy of the iterable.
  
  @param iterable
  the iterable. May not be <code>null</code>.
  @return a list with the same entries as the given iterable. May be the same as the given iterable iff it
  implements {@link List}, otherwise a copy is returned. Never <code>null</code>.