docs: function verSuffix(i) {
  		var rtn = {
  			prerelease : '',
  			metadata : '',
  			prereleaseVersions : null
  		};
  		if (self.versionMatch.length <= i) {
  			return rtn;
  		}
  		var v = self.versionMatch[i];
  		// reset the last index so the tests will be accurate
  		regexVerCurrBumpNum.lastIndex = 0;
  		// replace place holders with current or bumped version
  		var vi = -1;
  		var pvers = self.prev && self.prev.versionPrerelease && self.prev.versionPrerelease.match(regexVerNum);
  		var mdi = v.lastIndexOf(charVerMeta);
  		var lsti = v.length - 1;
  		v = v.replace(regexVerCurrBumpNum, function verCurrRepl(m, cg, bg, ng, off) {
  			vi++;
  			if (ng) {
  				return m;
  			}
  			if (cg) {
  				// match previous rerelease version slots with the current place
  				// holder slot (if any)
  				self.versionPrevIndices.push(++si);
  				return pvers && pvers.length > vi ? pvers[vi] : 0;
  			} else if (bg) {
  				// only increment when the bump is not the last instance or is
  				// the last instance, but there is metadata following its
  				// occurrence
  				if (mdi === lsti || mdi !== off || (off + m.length - 1) === lsti) {
  					self.versionBumpedIndices.push(++si);
  					return (pvers && pvers.length > vi ? +pvers[vi] : 0) + m.length;
  				}
  			}
  			return m;
  		});
  		// separate metadata from the prerelease
  		mdi = v.indexOf(charVerMeta);
  		if (mdi >= 0) {
  			rtn.prerelease = mdi === 0 ? '' : v.substring(0, mdi);
  			rtn.metadata = v.substring(mdi);
  		} else {
  			rtn.prerelease = v;
  		}
  		return rtn;
  	}