code: public static <T> Iterable<T> cast(Iterable<?> iterable) {
      return iterable == null ? null : new CastingIterable<T>(iterable);
    }
docs: <p>Casts the elements in an iterable in a lazy fashion. Calls to remove on the iterator will be reflected in
  iterable </p>
  
  @param <T>      the type parameter
  @param iterable the iterable
  @return the casted iterable or null if the given iterable is null