public static void walkDefmethodTree(Cons tree) {
    { MethodSlot method = null;

      { TranslationUnit self000 = TranslationUnit.newTranslationUnit();

        self000.category = Stella.SYM_STELLA_METHOD;
        self000.theObject = tree;
        self000.tuHomeModule = ((Module)(Stella.$MODULE$.get()));
        Native.setSpecial(Stella.$CURRENTTRANSLATIONUNIT$, self000);
      }
      method = Cons.defineMethodFromParseTree(tree);
      if ((!method.methodFunctionP) &&
          ((method.slotOwner == null) ||
           (((Stella_Class)(method.slotOwner.surrogateValue)) == null))) {
        { 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(" Can't define method `" + method.slotName + "' on the non-existent class `" + method.slotOwner + "'.");
              }
;
            }

          } finally {
            Stella.$PRINTREADABLYp$.set(old$PrintreadablyP$000);
          }
        }
        method.free();
        TranslationUnit.clearTranslationUnit(((TranslationUnit)(Stella.$CURRENTTRANSLATIONUNIT$.get())));
        Native.setSpecial(Stella.$CURRENTTRANSLATIONUNIT$, null);
      }
      else {
        ((TranslationUnit)(Stella.$CURRENTTRANSLATIONUNIT$.get())).theObject = method;
        ((TranslationUnit)(Stella.$CURRENTTRANSLATIONUNIT$.get())).codeRegister = tree.nthRest(3);
        if (MethodSlot.methodNeedsLispMacroP(method)) {
          Symbol.registerNativeName(method.slotName, Stella.KWD_COMMON_LISP, Stella.KWD_FUNCTION);
        }
      }
    }
  }