code: function FactorInstantiator() {
    var Ctor = getFactorConstructor.apply(this, arguments);
    var argsWithContext = Array.prototype.slice.call(arguments);
  
    // Adds an initial parameter. It will be the function context (this)
    // for the bind call. It does not matter because `new` overwrites, it,
    // however, so we're just setting it to null here for syntactic reasons.
    argsWithContext.unshift(null);
  
    return new (Ctor.bind.apply(Ctor, argsWithContext))();
  }
docs: @private
  
  @class FactorInstantiator
  
  @description
  The constructor for {@link Factor} instances ({@link SmsFactor} or
  {@link GoogleAuthenticatorFactor}). It parses the data to construct the
  correct constructor, and calls it with the data. It is used for polymorphic
  factor instantiation. It augments {@link InstanceResource} to adhere to the
  interface used for instantiation in {@link ResourceFactory}.
  
  @augments InstanceResource