code: function _wrapper(originalObject, wrappedObject, provide, injects, isTransientScope) {
      // TODO(@davequick): discuss with @halfspiral whether isTransientScope might just
      // better be an array of Annotations
      wrappedObject.$provide = originalObject.$provide;
      wrappedObject.$inject = originalObject.$inject;
      wrappedObject.$transientScope = originalObject.$transientScope;
  
      resolveProvide(wrappedObject, provide);
      resolveInjects(wrappedObject, injects);
      resolveTransientScope(wrappedObject, isTransientScope);
  
      return wrappedObject;
    }
docs: Takes any object and makes it an injectable (object, function, whatever)
  @param {*} originalObject
  @param {function} wrappedObject
  @param {string|object} provide is either an array or string representing the service that
  this object provides
  @param {string|string[]|object|object[]} injects - is either a single string or array of
  strings of module names to be injected
  @param {boolean} [isTransientScope=false] - whether to set @TransientScope annotation
  @returns {*}