docs: private static StringBuilder renderArray(Object o, Class<?> objectClass) {
          Class<?> componentType = objectClass.getComponentType();
          StringBuilder sb = new StringBuilder(ARRAY_PREFIX);
  
          if (componentType.isPrimitive() == false) {
              Object[] oa = (Object[]) o;
              for (int i = 0; i < oa.length; i++) {
                  if (i > 0) {
                      sb.append(ELEMENT_SEPARATOR);
                  }
                  sb.append(render(oa[i]));
              }
          } else {
              if (Boolean.TYPE.equals(componentType)) {
                  boolean[] ba = (boolean[]) o;
                  for (int i = 0; i < ba.length; i++) {
                      if (i > 0) {
                          sb.append(ELEMENT_SEPARATOR);
                      }
                      sb.append(ba[i]);
                  }
              } else if (Integer.TYPE.equals(componentType)) {
                  int[] ia = (int[]) o;
                  for (int i = 0; i < ia.length; i++) {
                      if (i > 0) {
                          sb.append(ELEMENT_SEPARATOR);
                      }
                      sb.append(ia[i]);
                  }
  
              } else if (Long.TYPE.equals(componentType)) {
                  long[] ia = (long[]) o;
                  for (int i = 0; i < ia.length; i++) {
                      if (i > 0) {
                          sb.append(ELEMENT_SEPARATOR);
                      }
                      sb.append(ia[i]);
                  }
              } else if (Double.TYPE.equals(componentType)) {
                  double[] ia = (double[]) o;
                  for (int i = 0; i < ia.length; i++) {
                      if (i > 0) {
                          sb.append(ELEMENT_SEPARATOR);
                      }
                      sb.append(ia[i]);
                  }
              } else if (Float.TYPE.equals(componentType)) {
                  float[] ia = (float[]) o;
                  for (int i = 0; i < ia.length; i++) {
                      if (i > 0) {
                          sb.append(ELEMENT_SEPARATOR);
                      }
                      sb.append(ia[i]);
                  }
              } else if (Character.TYPE.equals(componentType)) {
                  char[] ia = (char[]) o;
                  for (int i = 0; i < ia.length; i++) {
                      if (i > 0) {
                          sb.append(ELEMENT_SEPARATOR);
                      }
                      sb.append(ia[i]);
                  }
              } else if (Short.TYPE.equals(componentType)) {
                  short[] ia = (short[]) o;
                  for (int i = 0; i < ia.length; i++) {
                      if (i > 0) {
                          sb.append(ELEMENT_SEPARATOR);
                      }
                      sb.append(ia[i]);
                  }
              } else if (Byte.TYPE.equals(componentType)) {
                  byte[] ia = (byte[]) o;
                  for (int i = 0; i < ia.length; i++) {
                      if (i > 0) {
                          sb.append(ELEMENT_SEPARATOR);
                      }
                      sb.append(ia[i]);
                  }
              }
          }
          sb.append(ARRAY_SUFFIX);
          return sb;
      }