* @param body
   * @return Stella_Object
   */
  public static Stella_Object defmain(Cons varlist, Cons body) {
    { boolean processcmdlineargsP = !(varlist == Stella.NIL);
      Symbol v1Name = ((Symbol)(varlist.value));
      Symbol v2Name = ((Symbol)(varlist.rest.value));
      Symbol mainname = Symbol.internSymbolInModule("MAIN", ((Module)(Stella.$MODULE$.get())), true);
      Cons bodywithheader = Cons.cons(null, body);

      { PropertyList self000 = PropertyList.newPropertyList();

        self000.thePlist = Cons.extractOptions(bodywithheader, null);
        { PropertyList options = self000;
          Cons startupfunctioncall = (((((SystemDefinition)(Stella.$CURRENTSYSTEMDEFINITION$.get())) != null) &&
              (!(options.lookup(Stella.KWD_STARTUP_SYSTEMp) == Stella.SYM_STELLA_FALSE))) ? Cons.cons(Cons.cons(SystemDefinition.systemStartupFunctionSymbol(((SystemDefinition)(Stella.$CURRENTSYSTEMDEFINITION$.get()))), Stella.NIL), Stella.NIL) : Stella.NIL);

          options.removeAt(Stella.KWD_STARTUP_SYSTEMp);
          options.removeAt(Stella.KWD_PUBLICp);
          body = options.thePlist.concatenate(bodywithheader.rest, Stella.NIL);
          if (!processcmdlineargsP) {
            if (((Keyword)(Stella.$TRANSLATOROUTPUTLANGUAGE$.get())) == Stella.KWD_COMMON_LISP) {
              return (Cons.list$(Cons.cons(Stella.SYM_STELLA_DEFUN, Cons.cons(mainname, Cons.cons(Cons.list$(Cons.cons(Stella.NIL, Cons.cons(Stella.KWD_PUBLICp, Cons.cons(Stella.SYM_STELLA_TRUE, Cons.cons(startupfunctioncall.concatenate(body.concatenate(Stella.NIL, Stella.NIL), Stella.NIL), Stella.NIL))))), Stella.NIL)))));
            }
            else if ((((Keyword)(Stella.$TRANSLATOROUTPUTLANGUAGE$.get())) == Stella.KWD_CPP) ||
                ((((Keyword)(Stella.$TRANSLATOROUTPUTLANGUAGE$.get())) == Stella.KWD_CPP_STANDALONE) ||
                 (((Keyword)(Stella.$TRANSLATOROUTPUTLANGUAGE$.get())) == Stella.KWD_IDL))) {
              return (Cons.list$(Cons.cons(Stella.SYM_STELLA_DEFUN, Cons.cons(Cons.cons(mainname, Cons.cons(Stella.SYM_STELLA_INTEGER, Stella.NIL)), Cons.cons(Stella.NIL, Cons.cons(Stella.KWD_PUBLICp, Cons.cons(Stella.SYM_STELLA_TRUE, Cons.cons(startupfunctioncall.concatenate(body.concatenate(Cons.cons(Cons.list$(Cons.cons(Stella.SYM_STELLA_RETURN, Cons.cons(IntegerWrapper.wrapInteger(1), Cons.cons(Stella.NIL, Stella.NIL)))), Stella.NIL), Stella.NIL), Stella.NIL), Stella.NIL))))))));
            }
            else if (((Keyword)(Stella.$TRANSLATOROUTPUTLANGUAGE$.get())) == Stella.KWD_JAVA) {
              return (Cons.list$(Cons.cons(Stella.SYM_STELLA_DEFUN, Cons.cons(mainname, Cons.cons(Cons.list$(Cons.cons(Cons.cons(Cons.cons(Stella.localGensym("ARGV"), Cons.cons(Cons.list$(Cons.cons(Stella.SYM_STELLA_ARRAY, Cons.cons(Stella.NIL, Cons.cons(Stella.SYM_STELLA_OF, Cons.cons(Stella.SYM_STELLA_STRING, Cons.cons(Stella.NIL, Stella.NIL)))))), Stella.NIL)), Stella.NIL), Cons.cons(Stella.KWD_PUBLICp, Cons.cons(Stella.SYM_STELLA_TRUE, Cons.cons(startupfunctioncall.concatenate(body.concatenate(Stella.NIL, Stella.NIL), Stella.NIL), Stella.NIL))))), Stella.NIL)))));
            }
            else {
            }
          }
          else {
            if (((Keyword)(Stella.$TRANSLATOROUTPUTLANGUAGE$.get())) == Stella.KWD_COMMON_LISP) {
              return (Cons.list$(Cons.cons(Stella.SYM_STELLA_DEFUN, Cons.cons(mainname, Cons.cons(Cons.list$(Cons.cons(Cons.list$(Cons.cons(Stella.SYM_STELLA_aREST, Cons.cons(Cons.list$(Cons.cons(Stella.SYM_STELLA_rrARGS, Cons.cons(Stella.SYM_STELLA_STRING, Cons.cons(Stella.NIL, Stella.NIL)))), Cons.cons(Stella.NIL, Stella.NIL)))), Cons.cons(Stella.KWD_PUBLICp, Cons.cons(Stella.SYM_STELLA_TRUE, Cons.cons(Cons.list$(Cons.cons(Stella.SYM_STELLA_LET, Cons.cons(Cons.list$(Cons.cons(Cons.cons(v1Name, Cons.list$(Cons.cons(Stella.SYM_STELLA_INTEGER, Cons.cons(Cons.list$(Cons.cons(Stella.SYM_STELLA_VERBATIM, Cons.cons(Stella.KWD_COMMON_LISP, Cons.cons(Cons.list$(Cons.cons(Stella.internCommonLispSymbol("LENGTH"), Cons.cons(Stella.SYM_STELLA_rrARGS, Cons.cons(Stella.NIL, Stella.NIL)))), Cons.cons(Stella.NIL, Stella.NIL))))), Cons.cons(Stella.NIL, Stella.NIL))))), Cons.cons(Cons.cons(v2Name, Cons.list$(Cons.cons(Cons.list$(Cons.cons(Stella.SYM_STELLA_ARRAY, Cons.cons(Stella.NIL, Cons.cons(Stella.SYM_STELLA_OF, Cons.cons(Stella.SYM_STELLA_STRING, Cons.cons(Stella.NIL, Stella.NIL)))))), Cons.cons(Cons.list$(Cons.cons(Stella.SYM_STELLA_VERBATIM, Cons.cons(Stella.KWD_COMMON_LISP, Cons.cons(Cons.list$(Cons.cons(Stella.internCommonLispSymbol("MAKE-ARRAY"), Cons.cons(Cons.list$(Cons.cons(Stella.internCommonLispSymbol("LENGTH"), Cons.cons(Stella.SYM_STELLA_rrARGS, Cons.cons(Stella.NIL, Stella.NIL)))), Cons.cons(Stella.KWD_INITIAL_CONTENTS, Cons.cons(Stella.SYM_STELLA_rrARGS, Cons.cons(Stella.NIL, Stella.NIL)))))), Cons.cons(Stella.NIL, Stella.NIL))))), Cons.cons(Stella.NIL, Stella.NIL))))), Cons.cons(Stella.NIL, Stella.NIL)))), Cons.cons(startupfunctioncall.concatenate(body.concatenate(Stella.NIL, Stella.NIL), Stella.NIL), Stella.NIL)))), Cons.cons(Stella.NIL, Stella.NIL)))))), Stella.NIL)))));
            }
            else if (((Keyword)(Stella.$TRANSLATOROUTPUTLANGUAGE$.get())) == Stella.KWD_JAVA) {
              return (Cons.list$(Cons.cons(Stella.SYM_STELLA_DEFUN, Cons.cons(mainname, Cons.cons(Cons.list$(Cons.cons(Cons.cons(Cons.cons(v2Name, Cons.cons(Cons.list$(Cons.cons(Stella.SYM_STELLA_ARRAY, Cons.cons(Stella.NIL, Cons.cons(Stella.SYM_STELLA_OF, Cons.cons(Stella.SYM_STELLA_STRING, Cons.cons(Stella.NIL, Stella.NIL)))))), Stella.NIL)), Stella.NIL), Cons.cons(Stella.KWD_PUBLICp, Cons.cons(Stella.SYM_STELLA_TRUE, Cons.cons(Cons.list$(Cons.cons(Stella.SYM_STELLA_LET, Cons.cons(Cons.cons(Cons.cons(v1Name, Cons.list$(Cons.cons(Stella.SYM_STELLA_INTEGER, Cons.cons(Cons.list$(Cons.cons(Stella.SYM_STELLA_VERBATIM, Cons.cons(Stella.KWD_JAVA, Cons.cons(StringWrapper.wrapString(Symbol.javaTranslateName(v2Name).wrapperValue + ".length"), Cons.cons(Stella.NIL, Stella.NIL))))), Cons.cons(Stella.NIL, Stella.NIL))))), Stella.NIL), Cons.cons(startupfunctioncall.concatenate(body.concatenate(Stella.NIL, Stella.NIL), Stella.NIL), Stella.NIL)))), Cons.cons(Stella.NIL, Stella.NIL)))))), Stella.NIL)))));
            }
            else if ((((Keyword)(Stella.$TRANSLATOROUTPUTLANGUAGE$.get())) == Stella.KWD_CPP) ||
                ((((Keyword)(Stella.$TRANSLATOROUTPUTLANGUAGE$.get())) == Stella.KWD_CPP_STANDALONE) ||
                 (((Keyword)(Stella.$TRANSLATOROUTPUTLANGUAGE$.get())) == Stella.KWD_IDL))) {
              return (Cons.list$(Cons.cons(Stella.SYM_STELLA_DEFUN, Cons.cons(Cons.cons(mainname, Cons.cons(Stella.SYM_STELLA_INTEGER, Stella.NIL)), Cons.cons(Cons.list$(Cons.cons(Cons.cons(v1Name, Cons.cons(Stella.SYM_STELLA_INTEGER, Stella.NIL)), Cons.cons(Cons.cons(v2Name, Cons.cons(Cons.list$(Cons.cons(Stella.SYM_STELLA_ARRAY, Cons.cons(Stella.NIL, Cons.cons(Stella.SYM_STELLA_OF, Cons.cons(Stella.SYM_STELLA_STRING, Cons.cons(Stella.NIL, Stella.NIL)))))), Stella.NIL)), Cons.cons(Stella.NIL, Stella.NIL)))), Cons.cons(Stella.KWD_PUBLICp, Cons.cons(Stella.SYM_STELLA_TRUE, Cons.cons(startupfunctioncall.concatenate(body.concatenate(Cons.cons(Cons.list$(Cons.cons(Stella.SYM_STELLA_RETURN, Cons.cons(IntegerWrapper.wrapInteger(1), Cons.cons(Stella.NIL, Stella.NIL)))), Stella.NIL), Stella.NIL), Stella.NIL), Stella.NIL))))))));
            }
            else {
            }
          }
          { 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(" `defmain' is not supported for `" + ((Keyword)(Stella.$TRANSLATOROUTPUTLANGUAGE$.get())) + "'.");
                }
;
              }

            } finally {
              Stella.$PRINTREADABLYp$.set(old$PrintreadablyP$000);
            }
          }
          return (null);
        }
      }
    }
  }