code: @SuppressWarnings("unchecked")
  	public static void setRandom(final ThreadLocal<? extends Random> random) {
  		requireNonNull(random, "Random must not be null.");
  		CONTEXT.set(random::get);
  	}
docs: Set the new global {@link Random} object for the GA. The given
  {@link Random} don't have be thread safe, because the given
  {@link ThreadLocal} wrapper guarantees thread safety. Setting a
  <i>thread-local</i> random object leads, in general, to a faster
  PRN generation, when using a non-blocking PRNG. This is the preferred
  way for changing the PRNG.
  
  @param random the thread-local random engine to use.
  @throws NullPointerException if the {@code random} object is {@code null}.