public static void walkDefmacroTree(Cons tree) {
    { Stella_Object name = tree.rest.value;

      { PropertyList self000 = PropertyList.newPropertyList();

        self000.thePlist = Cons.extractOptions(tree, null);
        { PropertyList options = self000;
          MethodSlot method = null;

          if (Stella_Object.consP(name)) {
            { 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(" Macro `" + ((Cons)(name)).value + "' contains return type specification.");
                  }
;
                }

              } finally {
                Stella.$PRINTREADABLYp$.set(old$PrintreadablyP$000);
              }
            }
            return;
          }
          if (!(Stella_Object.symbolP(name))) {
            { Object old$PrintreadablyP$001 = 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(" Illegal macro name: `" + Stella_Object.deUglifyParseTree(name) + "'.");
                  }
;
                }

              } finally {
                Stella.$PRINTREADABLYp$.set(old$PrintreadablyP$001);
              }
            }
            return;
          }
          tree.firstSetter(Stella.SYM_STELLA_DEFUN);
          options.insertAt(Stella.KWD_MACROp, Stella.SYM_STELLA_TRUE);
          options.insertAt(Stella.KWD_TYPE, Stella.SYM_STELLA_OBJECT);
          tree.rest.rest.rest = options.thePlist.concatenate(tree.rest.rest.rest, Stella.NIL);
          Cons.walkDefmethodTree(tree);
          if (((TranslationUnit)(Stella.$CURRENTTRANSLATIONUNIT$.get())) != null) {
            method = ((MethodSlot)(((TranslationUnit)(Stella.$CURRENTTRANSLATIONUNIT$.get())).theObject));
            if (method.methodArgumentCount() > 5) {
              { Object old$PrintreadablyP$002 = 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(" Too many arguments in macro definition, maximum is 5.");
                    }
;
                  }

                } finally {
                  Stella.$PRINTREADABLYp$.set(old$PrintreadablyP$002);
                }
              }
              Native.setSpecial(Stella.$CURRENTTRANSLATIONUNIT$, null);
            }
          }
        }
      }
    }
  }