docs: public static String join(String delimiter, Object... values) {
          // Since primitive arrays does not pass as a values array, but as it's
          // single first element.
          if (values.length == 1) {
              Class<?> type = values[0].getClass();
              if (char[].class.equals(type)) {
                  return joinP(delimiter, (char[]) values[0]);
              } else if (int[].class.equals(type)) {
                  return joinP(delimiter, (int[]) values[0]);
              } else if (long[].class.equals(type)) {
                  return joinP(delimiter, (long[]) values[0]);
              } else if (double[].class.equals(type)) {
                  return joinP(delimiter, (double[]) values[0]);
              } else if (boolean[].class.equals(type)) {
                  return joinP(delimiter, (boolean[]) values[0]);
              }
          }
  
          StringBuilder builder = new StringBuilder();
          boolean first = true;
          for (Object value : values) {
              if (first) {
                  first = false;
              } else {
                  builder.append(delimiter);
              }
              builder.append(Objects.toString(value));
          }
  
          return builder.toString();
      }