code: function checkKeys(oDetails, mAllowedKeys2Type, sName) {
  		var sKey;
  
  		function error(sMessage) {
  			if (sName) {
  				sMessage += " at property: " + sName;
  			}
  			throw new Error(sMessage);
  		}
  
  		function typeOf(vValue) {
  			return Array.isArray(vValue) ? "array" : typeof vValue;
  		}
  
  		for (sKey in oDetails) {
  			if (!(mAllowedKeys2Type && sKey in mAllowedKeys2Type)) {
  				error("Unsupported '" + sKey + "'");
  			} else if (typeOf(oDetails[sKey]) !== mAllowedKeys2Type[sKey]) {
  				error("Not a " + mAllowedKeys2Type[sKey] + " value for '" + sKey + "'");
  			}
  		}
  	}
docs: /*
  Checks that the given details object has only allowed keys.
  
  @param {object} oDetails
  The details object
  @param {string[]} [mAllowedKeys2Type]
  Maps keys which are allowed for the details objects to the expected type name
  @param {string} [sName]
  The name of the property to which the details object belongs
  @throws {Error}
  In case an unsupported key is found