code: public <T> T pick (Iterable<? extends T> values, T ifEmpty, Weigher<? super T> weigher)
      {
          return pick(values.iterator(), ifEmpty, weigher);
      }
docs: Pick a random element from the specified iterable, or return
  <code>ifEmpty</code> if no element has a weight greater than <code>0</code>.
  
  <p><b>Implementation note:</b> a random number is generated for every entry with a
  non-zero weight after the first such entry.
  
  @throws NullPointerException if values is null.
  @throws IllegalArgumentException if any weight is less than 0.