code: function ParentConstructorFirst() {
  	// Extend this.__defaults from a __defaults of a constructor's prototype, because this.__defaults is searching through the whole prototype chain
  	utils.deepExtend(this, this.constructor.prototype.__defaults);
  
  	// Recursively call all parent's constructors, started from the top most parent node
  	(function constructParentStack(context, child, args) {
  		var parent = child.constructor.__parent;
  		// dive to the root parent
  		if (parent) {
  			constructParentStack(context, parent, args);
  		}
  
  		// execute parent's constructor if it was defined
  		if (child.hasOwnProperty('__constructor')) {
  			child.__constructor.apply(context, args);
  		}
  	})(this, this.constructor.__parent, arguments);
  
  	// Call constructor of a new class if ir is defined
  	// It is checking the __constructor from a constructor's prototype, because this.__constructor is searching throug the whole prototype chain
  	if (this.constructor.prototype.hasOwnProperty('__constructor')) {
  		this.constructor.prototype.__constructor.apply(this, arguments);
  	}
  }
docs: Execute a parent's constructor before the current constructor.
  The behavior of this builder is similar to C++ - all parent constructors are executing first, starting from the root parent constructor and finishing with the constructor of a new class.
  Before the constructor's chain will be executed the new instance will be extended by "__defaults" properties.