docs: public static String join(Iterable<?> objects, String delim, int limit, String ellipsis) {
  		StringBuilder joined = new StringBuilder();
  		boolean limitReached = false;
  
  		for (Object object : objects) {
  			if (joined.length() > 0) {
  				limitReached = joinLimit(joined, delim, limit);
  			}
  			limitReached = limitReached || joinLimit(joined, valueOf(object), limit);
  			if (limitReached) {
  				break;
  			}
  		}
  		if (limitReached) {
  			int joinedLength = joined.length();
  			int replaceLength = Math.min(ellipsis.length(), joinedLength);
  			int replaceStart = joinedLength - replaceLength;
  
  			for (int replaceIndex = 0; replaceIndex < replaceLength; replaceIndex++) {
  				joined.setCharAt(replaceStart + replaceIndex, ellipsis.charAt(replaceIndex));
  			}
  		}
  		return joined.toString();
  	}