docs: function () {
  		// Get a raw instance object (`init` is not called).
  		var inst = this.instance(),
  			args;
  		// Call `setup` if there is a `setup`
  		if (inst.setup) {
  			Object.defineProperty(inst,"__inSetup",{
  				configurable: true,
  				enumerable: false,
  				value: true,
  				writable: true
  			});
  			Object.defineProperty(inst, inSetupSymbol, {
  				configurable: true,
  				enumerable: false,
  				value: true,
  				writable: true
  			});
  			args = inst.setup.apply(inst, arguments);
  			if (args instanceof Construct.ReturnValue){
  				return args.value;
  			}
  			inst.__inSetup = false;
  			inst[inSetupSymbol] = false;
  		}
  		// Call `init` if there is an `init`
  		// If `setup` returned `args`, use those as the arguments
  		if (inst.init) {
  			inst.init.apply(inst, args || arguments);
  		}
  		return inst;
  	}