code: function updateOptions ( optionsToUpdate, fireSetEvent ) {
  
              // Spectrum is created using the range, snap, direction and step options.
              // 'snap' and 'step' can be updated, 'direction' cannot, due to event binding.
              // If 'snap' and 'step' are not passed, they should remain unchanged.
              var v = valueGet();
  
              var updateAble = ['margin', 'limit', 'padding', 'range', 'animate', 'snap', 'step', 'format'];
  
              // Only change options that we're actually passed to update.
              updateAble.forEach(function(name){
                  if ( optionsToUpdate[name] !== undefined ) {
                      originalOptions[name] = optionsToUpdate[name];
                  }
              });
  
              var newOptions = testOptions(originalOptions);
  
              // Load new options into the slider state
              updateAble.forEach(function(name){
                  if ( optionsToUpdate[name] !== undefined ) {
                      options[name] = newOptions[name];
                  }
              });
  
              // Save current spectrum direction as testOptions in testRange call
              // doesn't rely on current direction
              newOptions.spectrum.direction = scope_Spectrum.direction;
              scope_Spectrum = newOptions.spectrum;
  
              // Limit, margin and padding depend on the spectrum but are stored outside of it. (#677)
              options.margin = newOptions.margin;
              options.limit = newOptions.limit;
              options.padding = newOptions.padding;
  
              // Invalidate the current positioning so valueSet forces an update.
              scope_Locations = [];
              valueSet(optionsToUpdate.start || v, fireSetEvent);
          }
docs: Updateable: margin, limit, padding, step, range, animate, snap