code: public static <V> void copyWithFlowControl(final Iterable<V> source,
        CallStreamObserver<V> target) {
      Preconditions.checkNotNull(source, "source");
      copyWithFlowControl(source.iterator(), target);
    }
docs: Copy the values of an {@link Iterable} to the target {@link CallStreamObserver} while properly
  accounting for outbound flow-control.  After calling this method, {@code target} should no
  longer be used.
  
  <p>For clients this method is safe to call inside {@link ClientResponseObserver#beforeStart},
  on servers it is safe to call inside the service method implementation.
  </p>
  
  @param source of values expressed as an {@link Iterable}.
  @param target {@link CallStreamObserver} which accepts values from the source.