code: function(a, b, separator) {
  		separator || (separator = ' ');
  
  		var lastCharA = a.slice(-1);
  		var firstCharB = b.charAt(0);
  
  		if (lastCharA == '' || firstCharB == '') {
  			return a + b;
  		}
  		if (regexAlphaUnderscore.test(lastCharA)) {
  			if (regexAlphaNumUnderscore.test(firstCharB)) {
  				// e.g. `while` + `1`
  				// e.g. `local a` + `local b`
  				return a + separator + b;
  			} else {
  				// e.g. `not` + `(2>3 or 3<2)`
  				// e.g. `x` + `^`
  				return a + b;
  			}
  		}
  		if (regexDigits.test(lastCharA)) {
  			if (
  				firstCharB == '(' ||
  				!(firstCharB == '.' ||
  				regexAlphaUnderscore.test(firstCharB))
  			) {
  				// e.g. `1` + `+`
  				// e.g. `1` + `==`
  				return a + b;
  			} else {
  				// e.g. `1` + `..`
  				// e.g. `1` + `and`
  				return a + separator + b;
  			}
  		}
  		if (lastCharA == firstCharB && lastCharA == '-') {
  			// e.g. `1-` + `-2`
  			return a + separator + b;
  		}
  		var secondLastCharA = a.slice(-2, -1);
  		if (lastCharA == '.' && secondLastCharA != '.' && regexAlphaNumUnderscore.test(firstCharB)) {
  			// e.g. `1.` + `print`
  			return a + separator + b;
  		}
  		return a + b;
  	}
docs: /*--------------------------------------------------------------------------