code: public static <T> T getLast(Iterable<T> iterable)
      {
          if (iterable instanceof RichIterable)
          {
              return ((RichIterable<T>) iterable).getLast();
          }
          if (iterable instanceof RandomAccess)
          {
              return RandomAccessListIterate.getLast((List<T>) iterable);
          }
          if (iterable instanceof SortedSet && !((SortedSet<T>) iterable).isEmpty())
          {
              return ((SortedSet<T>) iterable).last();
          }
          if (iterable instanceof LinkedList && !((LinkedList<T>) iterable).isEmpty())
          {
              return ((LinkedList<T>) iterable).getLast();
          }
          if (iterable != null)
          {
              return IterableIterate.getLast(iterable);
          }
          throw new IllegalArgumentException("Cannot get last from null");
      }
docs: Returns the last element of a collection.  In the case of a List it is the element at the last index.  In the
  case of any other Collection, it is the last element that would be returned during an iteration. If the
  Collection is empty, the result is {@code null}.
  <p>
  WARNING!!! The order of Sets are not guaranteed (except for TreeSets and other Ordered Set implementations), so
  if you use this method, the last element could be any element from the Set.
  
  @throws IllegalArgumentException if the Collection is null