code: function addPoolingTo(CopyConstructor, pooler) {
    // Casting as any so that flow ignores the actual implementation and trusts
    // it to match the type we declared
    var NewKlass = CopyConstructor;
    NewKlass.instancePool = [];
    NewKlass.getPooled = pooler || DEFAULT_POOLER;
    if (!NewKlass.poolSize) {
      NewKlass.poolSize = DEFAULT_POOL_SIZE;
    }
    NewKlass.release = standardReleaser;
    return NewKlass;
  }
docs: Augments `CopyConstructor` to be a poolable class, augmenting only the class
  itself (statically) not adding any prototypical fields. Any CopyConstructor
  you give this may have a `poolSize` property, and will look for a
  prototypical `destructor` on instances.
  
  @param {Function} CopyConstructor Constructor that can be used to reset.
  @param {Function} pooler Customizable pooler.