code: public synchronized <X extends Poolable> Config<X> setAllocator(
        Allocator<X> allocator) {
      this.allocator = allocator;
      return (Config<X>) this;
    }
docs: Set the {@link Allocator} or {@link Reallocator} to use for the pools we
  want to configure. This will change the type-parameter of the Config
  object to match that of the new Allocator.
  
  The allocator is initially `null` in a new Config object, and can be set
  to `null` any time. However, in a standard configuration, it must be
  non-null when the Config is passed to a Pool constructor. Otherwise the
  constructor will throw an {@link IllegalArgumentException}.
  @param allocator The allocator we want our pools to use.
  @param <X> The type of {@link Poolable} that is created by the allocator,
  and the type of objects that the configured pools will contain.
  @return This Config instance, but with a generic type parameter that
  matches that of the allocator.