public static Cons cppTranslateNewArray(Cons tree) {
    { ParametricTypeSpecifier arraytype = ((ParametricTypeSpecifier)(tree.rest.value));
      Stella_Object initialelement = tree.rest.rest.value;
      Cons dimensions = Cons.cppTranslateListOfTrees(tree.rest.rest.rest);
      StandardObject elementtype = StandardObject.extractParameterType(arraytype, Stella.SYM_STELLA_ANY_VALUE, new Object[1]);

      initialelement = initialelement;
      return (Cons.list$(Cons.cons(Stella.SYM_STELLA_CPP_FUNCTION_CALL, Cons.cons(Cons.list$(Cons.cons(Stella.SYM_STELLA_CPP_IDENT, Cons.cons((Stella.cppUseGarbageCollectorP() ? ((StandardObject.cppNonPointerTypeP(elementtype) ? StringWrapper.wrapString("new (PointerFreeGC)") : StringWrapper.wrapString("new (GC)"))) : StringWrapper.wrapString("new")), Cons.cons(Stella.NIL, Stella.NIL)))), Cons.cons(Cons.list$(Cons.cons(Stella.SYM_STELLA_CPP_ACTUALS, Cons.cons(Cons.list$(Cons.cons(Stella.SYM_STELLA_CPP_ARRAY_REFERENCE, Cons.cons(Cons.list$(Cons.cons(Stella.SYM_STELLA_CPP_IDENT, Cons.cons(StandardObject.cppTranslateAndPointerizeTypeSpec(elementtype), Cons.cons(Stella.NIL, Stella.NIL)))), Cons.cons(dimensions.concatenate(Stella.NIL, Stella.NIL), Stella.NIL)))), Cons.cons(Stella.NIL, Stella.NIL)))), Cons.cons(Stella.NIL, Stella.NIL))))));
    }
  }