code: @ObjectiveCName("appendTypeName:class:")
      public static void appendTypeName(StringBuilder out, Class<?> c) {
          int dimensions = 0;
          while (c.isArray()) {
              c = c.getComponentType();
              dimensions++;
          }
          out.append(c.getName());
          for (int d = 0; d < dimensions; d++) {
              out.append("[]");
          }
      }
docs: Appends the best {@link #toString} name for {@code c} to {@code out}.
  This works around the fact that {@link Class#getName} is lousy for
  primitive arrays (it writes "[C" instead of "char[]") and {@link
  Class#getCanonicalName()} is lousy for nested classes (it uses a "."
  separator rather than a "$" separator).