* @param environment
   * @param body
   * @return Stella_Object
   */
  public static Stella_Object withLogicEnvironment(Stella_Object moduleform, Stella_Object environment, Cons body) {
    { Symbol modulevar = Stella.localGensym("MDL");
      Symbol contextvar = Stella.localGensym("CXT");

      return (Cons.list$(Cons.cons(Logic.SYM_STELLA_LET, Cons.cons(Cons.list$(Cons.cons(Cons.cons(modulevar, Cons.list$(Cons.cons(Logic.SYM_STELLA_MODULE, Cons.cons(moduleform, Cons.cons(Stella.NIL, Stella.NIL))))), Cons.cons(Cons.cons(contextvar, Cons.list$(Cons.cons(Logic.SYM_STELLA_CONTEXT, Cons.cons(modulevar, Cons.cons(Stella.NIL, Stella.NIL))))), Cons.cons(Stella.NIL, Stella.NIL)))), Cons.cons(Cons.list$(Cons.cons(Logic.SYM_STELLA_WHEN, Cons.cons(Cons.list$(Cons.cons(Logic.SYM_STELLA_NULLp, Cons.cons(modulevar, Cons.cons(Stella.NIL, Stella.NIL)))), Cons.cons(Cons.list$(Cons.cons(Logic.SYM_STELLA_SETQ, Cons.cons(modulevar, Cons.cons(Cons.cons(Logic.SYM_STELLA_$MODULE$, Stella.NIL), Stella.NIL)))), Cons.cons(Cons.list$(Cons.cons(Logic.SYM_STELLA_SETQ, Cons.cons(contextvar, Cons.cons(Cons.cons(Logic.SYM_STELLA_$CONTEXT$, Stella.NIL), Stella.NIL)))), Cons.cons(Stella.NIL, Stella.NIL)))))), Cons.cons(Cons.list$(Cons.cons(Logic.SYM_STELLA_SPECIAL, Cons.cons(Cons.list$(Cons.cons(Cons.list$(Cons.cons(Logic.SYM_STELLA_$MODULE$, Cons.cons(modulevar, Cons.cons(Stella.NIL, Stella.NIL)))), Cons.cons(Cons.list$(Cons.cons(Logic.SYM_STELLA_$CONTEXT$, Cons.cons(contextvar, Cons.cons(Stella.NIL, Stella.NIL)))), Cons.cons(Stella.NIL, Stella.NIL)))), Cons.cons((((Stella_Object.symbolP(environment) &&
          (!(environment == Logic.SYM_STELLA_NULL))) ? Cons.cons(Cons.list$(Cons.cons(Logic.SYM_STELLA_IGNORE, Cons.cons(environment, Cons.cons(Stella.NIL, Stella.NIL)))), Stella.NIL) : Stella.NIL)).concatenate(Cons.cons(Cons.list$(Cons.cons(Logic.SYM_STELLA_WITH_PROCESS_LOCK, Cons.cons(Logic.SYM_LOGIC_$POWERLOOM_LOCK$, Cons.cons(body.concatenate(Stella.NIL, Stella.NIL), Stella.NIL)))), Stella.NIL), Stella.NIL), Stella.NIL)))), Cons.cons(Stella.NIL, Stella.NIL)))))));
    }
  }