code: function (fullName, property, injectionName) {
        this.validateFullName(injectionName);
        var normalizedInjectionName = this.normalize(injectionName);
  
        if (fullName.indexOf(':') === -1) {
          return this.typeInjection(fullName, property, normalizedInjectionName);
        }
  
        _emberMetalDebug.assert('fullName must be a proper full name', this.validateFullName(fullName));
        var normalizedName = this.normalize(fullName);
  
        var injections = this._injections[normalizedName] || (this._injections[normalizedName] = []);
  
        injections.push({
          property: property,
          fullName: normalizedInjectionName
        });
      }
docs: Defines injection rules.
  These rules are used to inject dependencies onto objects when they
  are instantiated.
  Two forms of injections are possible:
  Injecting one fullName on another fullName
  Injecting one fullName on a type
  Example:
  ```javascript
  var registry = new Registry();
  var container = registry.container();
  registry.register('source:main', Source);
  registry.register('model:user', User);
  registry.register('model:post', Post);
  injecting one fullName on another fullName
  eg. each user model gets a post model
  registry.injection('model:user', 'post', 'model:post');
  injecting one fullName on another type
  registry.injection('model', 'source', 'source:main');
  var user = container.lookup('model:user');
  var post = container.lookup('model:post');
  user.source instanceof Source; //=> true
  post.source instanceof Source; //=> true
  user.post instanceof Post; //=> true
  and both models share the same source
  user.source === post.source; //=> true
  ```
  @private
  @method injection
  @param {String} factoryName
  @param {String} property
  @param {String} injectionName