code: function AddProperty(name, value, type, required = true, noBind = false) {
  		let THS = this, bindable = (v)=>(!!!noBind&&!!v&&!!v.bind&&!ISPTYPE(v)); 
  		if (value===undefined) { if (!!required) {
  			THS.ThrowType(name, type, value, 'undefined'); 
  		};	return; }
  		THS.CheckTypes(name, value, type, required);
  		if (bindable(value)) value = value.bind(THS);
  		DEFINE(THS, { [name]: LOCK(FREEZE(value)) });
  	}
docs: **Checks** and then **Adds** the Property to this `Object`
  
  @param {String} name name The `name` of the Property
  @param {*} value value The Property `value`
  @param {String} type type The `type` the Property should be
  @param {Boolean} [required=true] `true`, if Property **must** be defined
  @param {Boolean} [noBind=true] if `true`, Property will **NOT** be bound to `this`
  @private