code: function wrapOrCreateObject() {
        if(isFunction(obj) && (exists(obj.$provide) || exists(obj.$inject) || provide || injects)){
          var instance = Object.create(obj.prototype);
          return obj.apply(instance,arguments) || instance;
        }
        return obj;
      }
docs: TODO(@davequick): discuss with @halfspiral whether isTransientScope might just better be an array of Annotations