code: function (fullName, options) {
        _emberMetalDebug.assert('fullName must be a proper full name', this.registry.validateFullName(fullName));
        return lookup(this, this.registry.normalize(fullName), options);
      }
docs: Given a fullName return a corresponding instance.
  The default behaviour is for lookup to return a singleton instance.
  The singleton is scoped to the container, allowing multiple containers
  to all have their own locally scoped singletons.
  ```javascript
  var registry = new Registry();
  var container = registry.container();
  registry.register('api:twitter', Twitter);
  var twitter = container.lookup('api:twitter');
  twitter instanceof Twitter; // => true
  by default the container will return singletons
  var twitter2 = container.lookup('api:twitter');
  twitter2 instanceof Twitter; // => true
  twitter === twitter2; //=> true
  ```
  If singletons are not wanted, an optional flag can be provided at lookup.
  ```javascript
  var registry = new Registry();
  var container = registry.container();
  registry.register('api:twitter', Twitter);
  var twitter = container.lookup('api:twitter', { singleton: false });
  var twitter2 = container.lookup('api:twitter', { singleton: false });
  twitter === twitter2; //=> false
  ```
  @private
  @method lookup
  @param {String} fullName
  @param {Object} [options]
  @param {String} [options.source] The fullname of the request source (used for local lookup)
  @return {any}