docs: function (instance) {
          // we overwrite slug value on source field changes by default
          if (typeof slugOptions.overwrite === 'undefined') {
              slugOptions.overwrite = true;
          }
  
          // check if any of the fields used to build the slug have changed
          var changed = slugOptions.source.some(function (slugSourceField) {
              return instance.changed(slugSourceField);
          });
  
          // current slug value
          var slugValue = instance[slugColumn];
  
          // if we had no slug OR our slug changed and overwrite options is true build a new slug
          if (!slugValue || (slugOptions.overwrite && changed)) {
              slugValue = slugifyFields(instance, slugOptions.source);
          } else {
              instance[slugColumn] = slugValue;
  
              return instance;
          }
  
          // determine if the slug is unique
          return checkSlug(slugValue).then(function (isUnique) {
              // go ahead and return the unique slug
              if (isUnique) {
                  return slugValue;
              }
  
              // add on suffixes from the provided source suffixes
              return addSourceSuffix(instance, slugOptions.source, slugOptions.suffixSource);
          }).then(function (slug) {
              // no source suffixes present
              if (slug === null) {
                  return false;
              }
  
              slugValue = slug;
  
              // determine if the suffixed slug is unique
              return checkSlug(slug);
          }).then(function (isUnique) {
              // go ahead and return the unique suffixed slug
              if (isUnique) {
                  return slugValue;
              }
  
              // add on numeric prefixes (i.e., "-1", "-2") until the slug is unique
              return addNumericSuffix(slugValue);
          }).then(function (slug) {
              // update the slug
              instance[slugColumn] = slug;
  
              return instance;
          });
      }