* @param body
   * @return Stella_Object
   */
  public static Stella_Object traceIf(Stella_Object keyword, Cons body) {
    { Cons test = Stella.NIL;
      Cons elements = Cons.copyConsList(body);

      if (Stella_Object.safePrimaryType(keyword) == Stella.SGT_STELLA_CONS) {
        { Cons keyword000 = ((Cons)(keyword));

          { Stella_Object kwd = null;
            Cons iter000 = keyword000;
            Cons collect000 = null;

            for (;!(iter000 == Stella.NIL); iter000 = iter000.rest) {
              kwd = iter000.value;
              if (collect000 == null) {
                {
                  collect000 = Cons.cons(Cons.list$(Cons.cons(Stella.SYM_STELLA_MEMBp, Cons.cons(Stella.SYM_STELLA_$TRACED_KEYWORDS$, Cons.cons(kwd, Cons.cons(Stella.NIL, Stella.NIL))))), Stella.NIL);
                  if (test == Stella.NIL) {
                    test = collect000;
                  }
                  else {
                    Cons.addConsToEndOfConsList(test, collect000);
                  }
                }
              }
              else {
                {
                  collect000.rest = Cons.cons(Cons.list$(Cons.cons(Stella.SYM_STELLA_MEMBp, Cons.cons(Stella.SYM_STELLA_$TRACED_KEYWORDS$, Cons.cons(kwd, Cons.cons(Stella.NIL, Stella.NIL))))), Stella.NIL);
                  collect000 = collect000.rest;
                }
              }
            }
          }
          switch (test.length()) {
            case 0: 
              { 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(" Missing `trace-if' keyword.");
                    }
;
                  }

                } finally {
                  Stella.$PRINTREADABLYp$.set(old$PrintreadablyP$000);
                }
              }
              return (Stella_Object.walkDontCallMeTree(Stella.NIL, Stella.SGT_STELLA_VOID, new Object[1]));
            case 1: 
              test = ((Cons)(test.value));
            break;
            default:
              test = Cons.cons(Stella.SYM_STELLA_OR, test);
            break;
          }
        }
      }
      else {
        test = Cons.list$(Cons.cons(Stella.SYM_STELLA_MEMBp, Cons.cons(Stella.SYM_STELLA_$TRACED_KEYWORDS$, Cons.cons(keyword, Cons.cons(Stella.NIL, Stella.NIL)))));
      }
      return (Cons.list$(Cons.cons(Stella.SYM_STELLA_WHEN, Cons.cons(Cons.list$(Cons.cons(Stella.SYM_STELLA_AND, Cons.cons(Cons.list$(Cons.cons(Stella.SYM_STELLA_DEFINEDp, Cons.cons(Stella.SYM_STELLA_$TRACED_KEYWORDS$, Cons.cons(Stella.NIL, Stella.NIL)))), Cons.cons(test, Cons.cons(Stella.NIL, Stella.NIL))))), Cons.cons(Cons.cons(Stella.SYM_STELLA_PRINT, Cons.copyConsList(elements).concatenate(Stella.NIL, Stella.NIL)), Cons.cons(((((elements.last() == Stella.SYM_STELLA_EOL) ||
          (((Keyword)(Stella.$TRANSLATOROUTPUTLANGUAGE$.get())) == Stella.KWD_COMMON_LISP)) ? Stella.NIL : Cons.cons(Cons.list$(Cons.cons(Stella.SYM_STELLA_FLUSH_OUTPUT, Cons.cons(Stella.SYM_STELLA_STANDARD_OUTPUT, Cons.cons(Stella.NIL, Stella.NIL)))), Stella.NIL))).concatenate(Stella.NIL, Stella.NIL), Stella.NIL))))));
    }
  }