docs: function(name, resourcesNo, waitForMoreDemandingConsumers, debug){
  		/**
  		@memberof! qpp.SemaphoreMultiReservation#
  		@var {string} name - name of the semaphore
  		*/
  		this.name = name || "semaphore";
  		resourcesNo = resourcesNo || 1;
  
  		/**
  		@memberof! qpp.SemaphoreMultiReservation#
  		@private
  		@var {string} initialResources - initial (total) number of resources that semaphore has
  		*/
  		this.initialResources = resourcesNo;
  
  		/**
  		@memberof! qpp.SemaphoreMultiReservation#
  		@var {string} resourcesNo - currently available number of resources
  		*/
  		this.resourcesNo = resourcesNo;
  		/**
  		@memberof! qpp.SemaphoreMultiReservation#
  		@private
  		@var {string} waitingQueue - queue holding the list of waiting consumers (functions) for available resources
  		*/
  		this.waitingQueue = [];
  		/**
  		@memberof! qpp.SemaphoreMultiReservation#
  		@var {boolean} waitForMoreDemandingConsumers=true - defines if consumer can allocate resources even if other consumer waits for available resources (but needs more resources than currently available)
  		@example
  		var s = new Semaphore('s', 3);
  		var wP1 = s.wait(1); // fine, 2 resources left available
  		var wP2 = s.wait(3); // not fine (consumer 1 has to release)
  		// wP3 will be fine and resolved if {@link this.waitForMoreDemandingConsumers} === false
  		// or not fine and not resolved until consumer 1's resources are released (signaled)
  		// if {@link this.waitForMoreDemandingConsumers} === true (default)
  		var wP3 = s.wait(2);
  		*/
  		this.waitForMoreDemandingConsumers = typeof waitForMoreDemandingConsumers !== 'undefined' ? waitForMoreDemandingConsumers : true;
  
  		/**
  		@memberof! qpp.SemaphoreMultiReservation#
  		@var {boolean} debug - defines if debugging messages should be shown during Semaphore operations
  		*/
  		this.debug = typeof debug !== 'undefined' ? debug : false;
  	}