public static StringWrapper cppTranslateArrayType(ParametricTypeSpecifier arraytype) {
    { List dimensions = ParametricTypeSpecifier.arrayTypeDimensions(arraytype);
      StandardObject elementtype = StandardObject.extractParameterType(arraytype, Stella.SYM_STELLA_ANY_VALUE, new Object[1]);
      String translatedtype = "";
      String temp = null;

      if (dimensions.length() == 1) {
        return (StringWrapper.wrapString(StandardObject.cppTranslateAndPointerizeTypeSpec(elementtype).wrapperValue + "*"));
      }
      { IntegerWrapper dim = null;
        Cons iter000 = dimensions.theConsList;
        int i = Stella.NULL_INTEGER;
        int iter001 = 0;

        for (;!(iter000 == Stella.NIL); iter000 = iter000.rest, iter001 = iter001 + 1) {
          dim = ((IntegerWrapper)(iter000.value));
          i = iter001;
          if (i == 0) {
            temp = "(*)";
          }
          else if (dim == null) {
            temp = "[]";
          }
          else {
            temp = "[" + Native.stringify(dim) + "]";
          }
          translatedtype = translatedtype + temp;
        }
      }
      if (StandardObject.arrayTypeSpecifierP(elementtype)) {
        { Object old$PrintreadablyP$000 = Stella.$PRINTREADABLYp$.get();

          try {
            Native.setBooleanSpecial(Stella.$PRINTREADABLYp$, true);
            Stella.signalTranslationError();
            if (!(Stella.suppressWarningsP())) {
              Stella.printErrorContext(">> ERROR: ", Stella.STANDARD_ERROR);
              {
                Stella.STANDARD_ERROR.nativeStream.println();
                Stella.STANDARD_ERROR.nativeStream.println(" Can't yet handle nested arrays in C++: `" + Stella_Object.deUglifyParseTree(arraytype) + "'.");
              }
;
            }

          } finally {
            Stella.$PRINTREADABLYp$.set(old$PrintreadablyP$000);
          }
        }
        elementtype = Stella.SGT_STELLA_UNKNOWN;
      }
      temp = StandardObject.cppTranslateAndPointerizeTypeSpec(elementtype).wrapperValue;
      translatedtype = temp + " " + translatedtype;
      return (StringWrapper.wrapString(translatedtype));
    }
  }