code: public final Optional<T> last() {
          // Iterables#getLast was inlined here so we don't have to throw/catch a NSEE
          Iterator<T> iterator = this.iterator();
          if (!iterator.hasNext()) {
              return empty();
          }
  
          while (true) {
              T current = iterator.next();
              if (!iterator.hasNext()) {
                  return Optional.of(current);
              }
          }
      }
docs: Returns an {@link Optional} containing the last element in this fluent iterable.
  If the iterable is empty, {@code Optional.absent()} is returned.