docs: function setter(obj, path, setValue, fullExp) {
     var element = path.split('.'),
        key;
     for (var i = 0; element.length > 1; i++) {
        key = ensureSafeMemberName(element.shift(), fullExp);
        var propertyObj = obj[key];
        if (!propertyObj) {
           propertyObj = {};
           obj[key] = propertyObj;
        }
        obj = propertyObj;
     }
     key = ensureSafeMemberName(element.shift(), fullExp);
     obj[key] = setValue;
     return setValue;
  }