code: function(func){
  		var args = [].slice.call(arguments, 1);
  		var makeNew = func[canSymbol.for("can.new")];
  		if(makeNew) {
  			return makeNew.apply(func, args);
  		} else {
  			var context = Object.create(func.prototype);
  			var ret = func.apply(context, args);
  			if(typeReflections.isPrimitive(ret)) {
  				return context;
  			} else {
  				return ret;
  			}
  		}
  	}
docs: @function {function(...), ...} can-reflect/call.new new
  @parent can-reflect/call
  @description  Construct a new instance of a callable constructor
  
  @signature `new(func, ...rest)`
  
  Call the callable `func` as if it were a function, bound to a new instance of `func`, and with any additional
  parameters occurring after `func` set to the positional parameters.
  
  Note that `func` *must* either implement [can-symbol/symbols/new @@@@can.new],
  or have a callable `apply` property *and* a prototype to work with `canReflect.new`
  
  ```js
  canReflect.new(DefineList, ["foo"]); // -> ["foo"]<DefineList>
  ```
  
  @param  {function(...)} func a constructor
  @param  {*} rest arguments to be passed to the constructor
  @return {Object}  if `func` returns an Object, that returned Object; otherwise a new instance of `func`