docs: function (fullName, factory) {
        var options = arguments.length <= 2 || arguments[2] === undefined ? {} : arguments[2];
  
        _emberMetalDebug.assert('fullName must be a proper full name', this.validateFullName(fullName));
  
        if (factory === undefined) {
          throw new TypeError('Attempting to register an unknown factory: `' + fullName + '`');
        }
  
        var normalizedName = this.normalize(fullName);
  
        if (this._resolveCache[normalizedName]) {
          throw new Error('Cannot re-register: `' + fullName + '`, as it has already been resolved.');
        }
  
        delete this._failCache[normalizedName];
        this.registrations[normalizedName] = factory;
        this._options[normalizedName] = options;
      }