code: public static <T> long drain(Source<T> source) throws IOException {
          return drain(source, new AbstractSink<T>() {
              @Override
              public void put(T item) { }
          });
      }
docs: Exhausts the given source.
  <p>
  The source will be automatically closed regardless of success.
  
  @param source the source to exhaust.
  @param <T> the type.
  @return the number of items encountered.
  @throws IOException if an I/O problem occurs.